CVE-2026-69206
ŚrednieCVSS 5.9Streszczenie
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.
Ocena ryzyka
Udane powtórzenia wykonują uwierzytelnione żądania, w tym operacje zmieniające stan, jako przechwycony użytkownik. Może to prowadzić do nieautoryzowanych działań w aplikacji.
Rekomendacja
Należy zaktualizować Http4s do wersji 0.23.35 lub 1.0.0-M47, które naprawiają tę podatność.
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-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ń.
- CVE-2026-69214Średnie
Http4s to interfejs Scala dla usług HTTP. W wersjach przed 0.23.35 i 1.0.0-M47 oprogramowanie pośredniczące klienta CookieJar przechowuje atrybut Domain pliku cookie odpowiedzi bez sprawdzenia, czy pasuje on do hosta, który dostarczył plik cookie, ani bez odrzucania sufiksów publicznych. Złośliwy lub przejęty serwer kontaktowany przez ten sam CookieJar może zasadzić plik cookie dla innej domeny, a następnie jar wysyła ten plik cookie do domeny ofiary, umożliwiając utrwalenie sesji lub nadpisanie wrażliwych plików cookie.
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, DigestAuth replay protection records lastNc plus one instead of the highest nonce-count value it has accepted. When a legitimate client sends noncontiguous nc values because of parallel or retried requests, the stored counter remains below the accepted maximum, allowing a passive observer to replay a captured Authorization header multiple times. Successful replays execute authenticated requests, including state-changing operations, as the captured user. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

