CVE-2026-90678
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 43 - wyżej niż 43% wszystkich znanych CVE
Streszczenie
W HAProxy w wersjach 3.3.0–3.4.4 oraz 3.5-dev1–3.5-dev5 wykryto podatność typu HTTP request smuggling. Wymaga ona frontendu HTTP/3 (kompilacja z obsługą QUIC i nasłuch QUIC) oraz backendu HTTP/1.1 z chunked transfer coding na ponownie używanym połączeniu. Gdy żądanie HTTP/3 nie zawiera nagłówka Content-Length, deklarowana długość z nagłówka ramki DATA jest przedwcześnie zaliczana i wysyłana jako rozmiar chunku HTTP/1.1, co prowadzi do desynchronizacji połączenia.
Ocena ryzyka
Atakujący może przemycić żądanie z pominięciem reguł frontendu (np. blokady po ścieżce) oraz spowodować utratę żądań innych klientów, w tym ich nagłówków Authorization. Eksploatacja nie jest deterministyczna, ale można ją powtarzać aż do sukcesu.
Rekomendacja
Zaktualizuj HAProxy do wersji nowszej niż 3.4.4 (lub nowszej niż 3.5-dev5) albo wyłącz frontend HTTP/3/QUIC, jeśli nie jest używany. Do czasu aktualizacji rozważ ograniczenie ponownego użycia połączeń backendowych HTTP/1.1.
Inne podatności w HAProxy
Zobacz wszystkie- CVE-2016-5360Wysokie
HAproxy w wersji 1.6.x przed 1.6.6, w przypadku gdy reguła reqdeny zwraca odmowę, pozwala zdalnym atakującym na spowodowanie odmowy usługi poprzez dostęp do niezainicjowanej pamięci, co prowadzi do awarii. Może to również prowadzić do innych nieokreślonych skutków.
- CVE-2026-26081Średnie
HAProxy Community Edition w wersjach 3.0 do 3.3 przed 3.3.3 nie sprawdza długości formatu NEW_TOKEN. Podatność dotyczy również HAProxy Enterprise i ALOHA.
- CVE-2026-26080Niskie
HAProxy Community Edition w wersjach 3.2.x do 3.3.x przed 3.3.3 może wejść w pętlę lub ulec awarii z powodu nieprawidłowego przetwarzania varint. Problem dotyczy również HAProxy Enterprise i ALOHA.
- CVE-2026-55204Wysokie
HAProxy do wersji 3.4.0 zawiera podatność na dereferencję wskaźnika null w funkcji hpack_dht_insert() w pliku src/hpack-tbl.c. Błąd występuje, gdy funkcja hpack_dht_defrag() zwraca wartość null z powodu wyczerpania puli pamięci, a jej wynik nie jest walidowany. Atakujący może wykorzystać tę podatność, wysyłając żądania z wstawieniami do dynamicznej tablicy HPACK przy ograniczonej pamięci, co prowadzi do awarii procesów roboczych HAProxy i odmowy usługi.
- CVE-2026-55203Wysokie
HAProxy do wersji 3.4.0 zawiera podatność na przepełnienie liczby całkowitej w strukturze fcgi_conn w polu drl. Gdy contentLength wynosi 65535, a paddingLength jest większe lub równe 1, pole drl zawija się do 0, co prowadzi do błędnego parsowania bufora jako nowych nagłówków ramek FCGI. Umożliwia to złośliwym backendom FastCGI desynchronizację parsera ramek FCGI.
- CVE-2026-33555Średnie
W HAProxy przed wersją 3.3.6 wykryto podatność w parserze HTTP/3. Nie sprawdza on, czy długość odebranego ciała żądania zgadza się z wcześniej zadeklarowanym nagłówkiem Content-Length, gdy strumień jest zamykany ramką z pustym ładunkiem. Problem istnieje od wersji 2.6.
- CVE-2023-40225Wysokie
HAProxy w wersjach od 2.0.32 do 2.6.14 oraz od 2.7.0 do 2.8.1 przekazuje puste nagłówki Content-Length, co narusza sekcję 8.6 RFC 9110. W rzadkich przypadkach serwer HTTP/1 za HAProxy może zinterpretować ładunek jako dodatkowe żądanie.
Oryginalny opis (angielski, źródło NVD)
An issue was discovered in HAProxy 3.3.0 through 3.4.4 and in 3.5-dev1 through 3.5-dev5. Exploitation requires an HTTP/3 frontend: HAProxy must be built with QUIC support and configured with a QUIC bind listener, and the affected traffic must reach a backend over HTTP/1.1 using chunked transfer coding on a reused connection. Under those conditions, when an HTTP/3 request carries no Content-Length header, the HTTP/3 multiplexer credits the length declared in a DATA frame header to the stream endpoint's known-input-payload estimate at the moment the frame header is decoded, before the payload has been received, and that declared length is emitted verbatim as the HTTP/1.1 chunk size. A remote unauthenticated client that declares more payload than it delivers and then ends the stream causes HAProxy to announce a chunk larger than the bytes it writes and to return the connection to the idle pool in a desynchronized state. The result is potential HTTP request smuggling on reused backend connections: an attacker can place a request past a frontend rule such as a path-based http-request deny, so that the smuggled request is never seen by HAProxy's HTTP analysis, and can cause concurrent clients' requests, including their request lines and Authorization headers, to be consumed as the attacker's request body and lost. Exploitation is not deterministic; it depends on a race with backend connection pooling, succeeding in a majority of but not all trials during testing, and can be retried freely. The mechanism was introduced in 3.3-dev10; releases 3.2.x and earlier are unaffected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

