CVE-2026-54556
WysokieCVSS 8.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
Http4s przed wersjami 0.23.35 i 1.0.0-M47 ma podatność na atak DoS przez HTTP/2 w backendzie Ember. Hpack wrapper nie uwzględnia w limicie rozmiaru nagłówków indeksowanych nagłówków ani narzutu na nagłówek, co pozwala na ekspansję małego bloku do dużej reprezentacji w pamięci. Wielokrotne złośliwe połączenia mogą wyczerpać pamięć procesu.
Ocena ryzyka
Nieuwierzytelniony atakujący może spowodować wyczerpanie pamięci i niedostępność usługi, co wpływa na dostępność aplikacji.
Rekomendacja
Zaktualizuj Http4s do wersji 0.23.35 lub 1.0.0-M47. Ogranicz liczbę równoczesnych połączeń HTTP/2, aby zmniejszyć ryzyko.
Inne podatności w Http4s
Zobacz wszystkie- CVE-2026-69204Krytyczne
W bibliotece Http4s (moduł Ember HTTP/1.1) w wersjach przed 0.23.35 i 1.0.0-M47 nie odrzucano komunikatów zawierających jednocześnie nagłówki Transfer-Encoding i Content-Length. Umożliwia to rozbieżność w interpretacji ramek treści między pośrednikiem a serwerem Ember, co pozwala na przemyt żądań HTTP (request smuggling).
- 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.
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, an unauthenticated HTTP/2 peer can cause an out-of-memory denial of service in the Ember backend with HTTP/2 enabled. The Hpack wrapper in ember-core/shared/src/main/scala/org/http4s/ember/core/h2/Hpack.scala concatenates HEADERS and CONTINUATION frame fragments and decodes them into a single List, but maxHeaderSize accounting does not include indexed headers or HPACK per-header overhead. A small compressed header block can therefore expand into a much larger decoded representation that remains in memory for processing. Servers exposed to untrusted HTTP/2 traffic and clients directed to an untrusted HTTP/2 server are affected, and concurrent malicious connections can exhaust the process heap. This issue is fixed in versions 0.23.35 and 1.0.0-M47.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

