Traefik: cztery CVE omijają granice routingu, nagłówków i tożsamości
Traefik 3.7.13 i 2.11.57 naprawiają cztery błędy w HTTP/3, h2c, ścieżkach i trailerach. Wyjaśniamy warunki ataku i plan aktualizacji.
- AUTOR
- Karol Rapacz / CEO Breachroad · OSCP · PNPT
- PUBLIKACJA
- 13 września 2026
- CZAS CZYTANIA
- 12 min czytania
- TEMAT
- Chmura, infrastruktura i DevSecOps
Traefik opublikował poprawki dla czterech podatności, które mają wspólny motyw: proxy podejmowało decyzję bezpieczeństwa na podstawie jednego obrazu żądania lub połączenia, a backend otrzymywał albo współdzielił inny. Skutkiem może być obejście uwierzytelnienia, reguł ścieżek, filtrowania nagłówków i obserwowalności.
Wersje naprawcze to Traefik 3.7.13 oraz 2.11.57. Najpoważniejsze CVE-2026-88007 jest krytyczne i dotyczy współdzielenia połączeń do backendu przy HTTP/3 oraz NTLM lub Negotiate. Pozostałe trzy błędy mają wysoką wagę i obejmują tunel h2c, nietypową postać celu żądania oraz zaufane nazwy przemycone w trailerach.
CVE-2026-88007: cudza tożsamość na połączeniu backendowym
NTLM i Negotiate mogą wiązać stan uwierzytelnienia z trwałym połączeniem, a nie z każdym niezależnym żądaniem. Dlatego proxy musi pilnować, aby połączenie do backendu użyte dla jednego klienta nie zostało później przydzielone innemu klientowi w sposób dziedziczący poprzednią tożsamość.
W ścieżce HTTP/3 Traefik nie inicjalizował mechanizmu, który w HTTP/1.1 i HTTP/2 utrzymywał transport backendowy osobno dla połączenia frontowego. W rezultacie żądanie innego klienta mogło trafić na połączenie już uwierzytelnione jako ofiara. Skutkiem był możliwy odczyt danych lub wykonanie działania jako tamta osoba bez jej poświadczeń.
Nie każda instalacja Traefika jest podatna na ten scenariusz. Wymagane są jednocześnie: HTTP/3 na entrypoincie, backend korzystający z NTLM lub Negotiate z tożsamością powiązaną z połączeniem oraz keep-alive do backendu. Zwykłe uwierzytelnianie sprawdzane osobno dla każdego żądania nie spełnia tego modelu.
Zakres obejmuje 3.0.0–3.7.12 oraz 2.11.0–2.11.56. Naprawę dostarczono odpowiednio w 3.7.13 i 2.11.57.
CVE-2026-88008: h2c tworzy tunel poza middleware
Drugi błąd dotyczy obsługi mechanizmu Upgrade w HTTP/1.1. Traefik przekazywał do backendu żądany przez klienta upgrade do h2c oraz nagłówek ustawień HTTP/2. Jeżeli backend akceptował taki upgrade i odpowiadał kodem 101, proxy przechodziło w tryb surowego tunelu bajtów.
Po ustanowieniu tunelu dalsze żądania HTTP/2 nie przechodziły ponownie przez router i middleware Traefika. Przy wspólnym backendzie publiczna ścieżka mogła więc posłużyć do dotarcia do ścieżki chronionej przez BasicAuth, ForwardAuth, IPAllowList albo ograniczenie liczby żądań. Takie żądania omijały też zwykłe logi dostępu, metryki i tracing proxy.
Warunkiem jest backend obsługujący klientowski upgrade h2c w opisany sposób; testy projektu nie wykazały podatności popularnych gotowych serwerów. Nie jest to zatem ogólne stwierdzenie „każdy backend HTTP/2 jest podatny”. Zakres wersji to 3.4.2–3.7.12 oraz 2.11.26–2.11.56.
CVE-2026-88009: router widzi /, backend inną ścieżkę
Traefik przyjmował nietypowy, pozbawiony początkowego ukośnika cel żądania HTTP/1.x. Biblioteka Go przedstawiała go jako wartość opaque z pustą ścieżką. Router, sanitizacja, middleware i log dostępu oceniały wtedy ścieżkę znormalizowaną do /, natomiast proxy przekazywało backendowi oryginalny ciąg.
Jeżeli backend interpretował tę postać jako inną ścieżkę lub host, pojawiała się rozbieżność: kontrola dostępu widziała /, a aplikacja otrzymywała cel administracyjny. Możliwe skutki obejmują obejście reguł path/prefix, polityk ForwardAuth i ograniczeń między hostami. Dodatkowo access log Traefika zapisywał żądanie jako wejście na /, co utrudniało triage.
Ten problem dotyczy 3.0.0–3.7.12 oraz wydań 2.x do 2.11.56. W odróżnieniu od scenariusza NTLM nie wymaga włączenia HTTP/3; ryzyko zależy jednak od tego, jak konkretny backend interpretuje nietypowy cel żądania.
CVE-2026-88004: zaufana nazwa wraca jako trailer
Mechanizmy aliasHeadersStrategy, underscoreHeadersStrategy oraz domyślne usuwanie niezaufanych X-Forwarded-* sprawdzały zwykłe nagłówki, lecz nie trailery żądania. Klient mógł więc dostarczyć tę samą zaufaną lub aliasującą nazwę później, w sekcji trailer HTTP/1.1 lub HTTP/2.
Największy wpływ występuje, gdy middleware buforuje ciało, a backend scala trailery z przestrzenią nagłówków i używa ich do decyzji o tożsamości lub zaufaniu. Poprawka przestaje przekazywać wartości trailerów żądania do backendu. Problem występuje tylko w Traefiku 3.2.0–3.7.12; linia v2 korzysta z innej implementacji reverse proxy i nie jest objęta tym CVE.
Plan aktualizacji bez utraty kontekstu
Najpierw zinwentaryzuj wersje w obrazach, Helm chartach, DaemonSetach, maszynach wirtualnych i zapasowych ingressach. Potem:
- zaktualizuj wspieraną linię do 3.7.13 lub 2.11.57;
- jeżeli używasz v3.2–v3.6, przejdź do v3.7.13, ponieważ te linie są niewspierane i nie otrzymają własnych wydań naprawczych;
- przeczytaj migration guide wskazany w informacji o odpowiednim wydaniu;
- przetestuj routing, middleware, WebSocket, HTTP/3, h2c/gRPC i uwierzytelnianie do backendu;
- potwierdź wersję rzeczywiście działającego procesu, nie tylko tag obrazu w repozytorium.
Jeżeli zmiana nie może wejść od razu, wyłączenie HTTP/3 ogranicza scenariusz CVE-2026-88007, a usunięcie klientowskiego upgrade h2c przed Traefikiem może ograniczyć CVE-2026-88008. To mitygacje dla wybranych ścieżek, nie zamiennik aktualizacji dla całego pakietu.
Triage musi sięgnąć za warstwę proxy
Nie opieraj analizy wyłącznie na access logach Traefika. CVE-2026-88008 może przenieść dalszy ruch do surowego tunelu, a CVE-2026-88009 może zapisać nietypowe żądanie jako /. Zachowaj i koreluj logi backendów, IdP, WAF, load balancera i aplikacji.
W środowiskach z NTLM lub Negotiate szukaj działań przypisanych do użytkownika bez odpowiadającej im sekwencji logowania i z nietypowego klienta HTTP/3. Dla routingu porównuj ścieżkę zapisaną na brzegu z tym, co widziała aplikacja. Dla trailerów sprawdź, czy backend albo biblioteka faktycznie scala je z nagłówkami.
Advisory projektu nie stwierdzają aktywnego wykorzystywania tych czterech luk. Powyższe wskazówki detekcyjne są rekomendacjami Breachroad wynikającymi z opisanych rozbieżności i wymagają dostosowania do własnej telemetrii.
Źródła i dalsze działania
Warunki, zakresy wersji i wpływ pochodzą z oficjalnych advisory Traefika dla CVE-2026-88007, CVE-2026-88008, CVE-2026-88009 i CVE-2026-88004. Wersje naprawcze oraz odsyłacze do migracji są w wydaniach Traefik 3.7.13 i 2.11.57.
Problem pokazuje, dlaczego reguła na proxy i interpretacja w aplikacji muszą być testowane jako jeden łańcuch. Więcej o podobnych rozbieżnościach opisujemy w analizie web cache poisoning i cache deception. Zespołom pomagamy ćwiczyć wspólną reakcję podczas szkoleń z cyberbezpieczeństwa, a granice routingu i autoryzacji weryfikujemy w testach penetracyjnych web i API.


