CVE-2026-69213
WysokieCVSS 7.5Streszczenie
Http4s (wersje przed 0.23.35 i 1.0.0-M47) ma podatność na wyczerpanie pamięci w serwerze Ember HTTP/2. Nieuwierzytelniony klient HTTP/2 może wysyłać ramki PING, SETTINGS lub DATA, które powodują, że serwer enqueuje odpowiedzi lub ramki WINDOW_UPDATE szybciej niż są zapisywane, co prowadzi do wyczerpania pamięci sterty.
Ocena ryzyka
Ryzyko dostępności: zdalny atak może doprowadzić do wyczerpania pamięci serwera, co skutkuje odmową usługi (DoS).
Rekomendacja
Zaktualizuj Http4s do wersji 0.23.35 lub 1.0.0-M47, które zawierają poprawkę ograniczającą kolejki wyjściowe.
Inne podatności w Http4s
Zobacz wszystkie- CVE-2026-88975Wysokie
Http4s to interfejs Scala dla usług HTTP. Przed wersjami 0.23.37 i 1.0.0-M48 pętla odczytu HTTP/2 w Ember analizuje 24-bitową zadeklarowaną długość ramki, ale czeka na buforowanie całego ładunku przed porównaniem go z SETTINGS_MAX_FRAME_SIZE. Nieuwierzytelniony peer może zadeklarować ładunek bliski 16 MiB na połączeniu, gdzie Ember reklamował 16 KiB, i albo ukończyć, albo powoli go przesyłać, powodując do 1024-krotną amplifikację pamięci na połączenie przed odrzuceniem ramki przez processFrame. Współdzielona pętla H2Connection.readLoop dotyczy serwerów i klientów z http2, podczas gdy konfiguracje z wyłączonym HTTP/2 są niezależne, a poprawka odrzuca zbyt duże ramki przed buforowaniem ich ładunków. Problem naprawiono w wersjach 0.23.37 i 1.0.0-M48.
- CVE-2026-69218Wysokie
Podatność w bibliotece Http4s (interfejs Scala dla usług HTTP) przed wersjami 0.23.35 i 1.0.0-M47. Gdy Ember otrzyma ramkę HTTP/2 HEADERS lub PUSH_PROMISE bez END_HEADERS, H2Connection buforuje blok nagłówków i kolejne fragmenty CONTINUATION bez ograniczenia rozmiaru, co pozwala zdalnemu peerowi wyczerpać pamięć sterty.
- CVE-2026-69217Wysokie
Podatność w bibliotece Http4s przed wersjami 0.23.35 i 1.0.0-M47. Parser HTTP/1.1 Ember akceptuje różniące się zduplikowane nagłówki Content-Length i używa ostatniej wartości zamiast odrzucić wiadomość, co umożliwia przemyt żądań CL.CL.
- CVE-2026-69215Średnie
Http4s to interfejs Scala dla usług HTTP. W wersjach przed 0.23.35 i 1.0.0-M47 middleware klienta CookieJar używa niezakotwiczonych sprawdzeń podciągów zamiast dopasowania domeny i ścieżki zgodnego z RFC 6265. W efekcie cookie dla example.com może zostać wysłane do kontrolowanej przez atakującego nazwy hosta, takiej jak evilexample.com.
- CVE-2026-69210Wysokie
Podatność w bibliotece Http4s przed wersjami 0.23.35 i 1.0.0-M47. WebSocket FrameTranscoder.bodyLength odrzuca rozszerzone długości ładunku powyżej Integer.MAX_VALUE, ale dopuszcza ujemne 64-bitowe długości, co pozwala zdalnemu klientowi wysłać ramkę powodującą nieskończoną pętlę dekodowania i wyczerpanie zasobów.
- CVE-2026-69206Średnie
Http4s to interfejs Scala dla usług HTTP. W wersjach przed 0.23.35 i 1.0.0-M47 ochrona przed powtórzeniem DigestAuth zapisuje lastNc plus jeden zamiast najwyższej zaakceptowanej wartości nonce-count. Gdy legalny klient wysyła nieciągłe wartości nc z powodu równoległych lub ponawianych żądań, przechowywany licznik pozostaje poniżej zaakceptowanego maksimum, co pozwala pasywnemu obserwatorowi na wielokrotne powtórzenie przechwyconego nagłówka Authorization.
- CVE-2026-69205Wysokie
Podatność w bibliotece Http4s przed wersjami 0.23.35 i 1.0.0-M47. Ember HeaderP.parse używa testu podciągu z rozróżnianiem wielkości liter dla wartości Transfer-Encoding i dekoduje bajty nagłówka z domyślnym zestawem znaków platformy, co prowadzi do niezgodności z pośrednikami zgodnymi z RFC i umożliwia przemyt żądań TE.CL lub TE.0.
- CVE-2026-69203Wysokie
W bibliotece Http4s (serwer Ember z włączonym HTTP/2) nie jest egzekwowane ograniczenie SETTINGS_MAX_CONCURRENT_STREAMS dla strumieni tworzonych przez drugą stronę. Jedno nieuwierzytelnione połączenie może otworzyć nieograniczoną liczbę strumieni, z których każdy zachowuje swój stan, aż do wyczerpania sterty. Ten sam problem występuje w ember-client przy ramkach PUSH_PROMISE, ponieważ parametr enablePush nie jest egzekwowany. Podatność naprawiono w wersjach 0.23.35 i 1.0.0-M47.
- CVE-2026-69202Wysokie
W bibliotece Http4s okno kontroli przepływu HTTP/2 w Ember jest uzupełniane na podstawie bajtów odebranych z sieci, a nie zużytych przez aplikację, a każdy strumień przechowuje dane w nieograniczonym kanale. Złośliwy peer może wysyłać treść szybciej, niż wolna lub nieodczytująca aplikacja ją konsumuje, co prowadzi do zatrzymania ładunków w stercie na serwerze lub kliencie Ember z włączonym withHttp2. Poprawka ogranicza kanał treści strumienia H2Connection, aby konsumpcja przez aplikację wymuszała backpressure. Podatność naprawiono w wersjach 0.23.35 i 1.0.0-M47.
- CVE-2026-69216Średnie
Http4s to interfejs Scala dla usług HTTP. W wersjach przed 0.23.35 i 1.0.0-M47 dekoder fragmentów (chunk decoder) w Ember przycina token rozmiaru fragmentu i akceptuje wiodące znaki plus lub minus zamiast wymagać co najmniej jednej cyfry szesnastkowej zakończonej wymaganym CRLF. Gdy pośrednik przekazuje dane fragmentaryczne bez ponownego kodowania i interpretuje nieprawidłowe granice fragmentów inaczej, nieuwierzytelniony atakujący może przeprowadzić przemyt żądań TE.TE, omijając kontrolę pośrednika, zatruwając pamięci podręczne lub przejmując kolejkę żądań.
Oryginalny opis (angielski, źródło NVD)
Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, Ember HTTP/2 serializes outbound frames through one unbounded queue consumed by writeLoop. When the peer stops reading, an unauthenticated HTTP/2 client can continue sending PING, SETTINGS, or DATA frames that cause Ember to enqueue acknowledgments or WINDOW_UPDATE frames faster than the writer drains them, exhausting heap memory on a server built with withHttp2. The shared behavior also affects an ember-client connected to a hostile HTTP/2 server, and the patch replaces the unbounded path with bounded, backpressured outbound queues. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

