CVE-2026-116592
WysokieCVSS 7.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 5 - wyżej niż 5% wszystkich znanych CVE
Streszczenie
W kliencie HTTP undici dla Node.js (wersje 7.30.1 oraz 8.12.2–8.12.3) połączenie interceptora przekierowań i współdzielonego cache pozwala na zatruwanie cache, ponieważ decyzja o zapisie opiera się tylko na ostatnim skoku przekierowania. Może to skutkować udostępnieniem prywatnej odpowiedzi innego użytkownika lub zignorowaniem nagłówka Vary i statusu no-cache.
Ocena ryzyka
Atakujący kontrolujący cel przekierowania z zaufanego URL może zatruć wpis w cache i doprowadzić do wycieku prywatnych danych między użytkownikami.
Rekomendacja
Zaktualizuj undici do wersji 7.30.2 lub 8.12.4 bądź nowszej; jako obejście skonfiguruj interceptory w kolejności cache, a następnie redirect, lub wyłącz współdzielony cache dla żądań z przekierowaniami.
Inne podatności w undici
Zobacz wszystkie- CVE-2026-116630Średnie
W bibliotece undici (klient HTTP dla Node.js) w wersjach 7.0.0–7.30.1 i 8.0.0–8.12.3, gdy Agent łączy interceptory przekierowań i współdzielonego cache, odpowiedź z cache rewalidowana warunkowym żądaniem może zostać potwierdzona przez 304 Not Modified z innego origin. W wyniku tego współdzielony cache może zwrócić późniejszemu nieuwierzytelnionemu klientowi zapisaną uwierzytelnioną odpowiedź oryginalnego origin.
- CVE-2026-120474Średnie
W kliencie HTTP undici dla Node.js (wersje 7.0.0–7.30.1 i 8.0.0–8.12.3) połączenie interceptora przekierowań ze współdzielonym cache powoduje, że uwierzytelnione żądanie przekierowane do tego samego originu zapisuje odpowiedź pod kluczem pierwotnego żądania, bez poświadczeń i nagłówka Vary. Późniejszy anonimowy lub inny użytkownik może otrzymać prywatną odpowiedź pierwszego użytkownika.
- CVE-2026-120423Średnie
W kliencie HTTP undici dla Node.js (wersje 7.15.0–7.30.1 i 8.0.0–8.12.3) funkcja fetch weryfikuje metadane Subresource Integrity, dzieląc ciąg tylko po pojedynczej spacji, podczas gdy gramatyka SRI dopuszcza także tabulatory i inne białe znaki ASCII. Wartość integralności poprzedzona tabulatorem jest ignorowana, a undici traktuje listę jako pustą i akceptuje odpowiedź, co pozwala serwerowi zwrócić inne ciało niż przypięty skrót.
- CVE-2026-120415Średnie
W bibliotece undici (klient HTTP dla Node.js) w wersjach 7.0.0–7.30.1 oraz 8.0.0–8.12.3 mechanizm przekierowań nie usuwa wrażliwych nagłówków (Authorization, Cookie, Proxy-Authorization, Host) przy przekierowaniu na inną domenę, jeśli nagłówki żądania podano jako tablicę krotek nazwa-wartość. W połączeniu z interceptorem normalizującym nagłówki (cache, deduplicate) dochodzi do ujawnienia poświadczeń powiązanych z domeną źródłową niepowiązanemu celowi przekierowania.
- CVE-2026-120222Średnie
W bibliotece undici (klient HTTP dla Node.js) w wersjach 7.0.0–7.30.1 oraz 8.0.0–8.12.3, gdy interceptor cache współpracuje z handlerem rzucającym wyjątek podczas przetwarzania odpowiedzi (np. dump przekraczający maxSize lub decompress odrzucający więcej niż pięć wartości Content-Encoding), asynchronicznie zgłoszony wyjątek podczas odtwarzania odpowiedzi z cache staje się nieprzechwyconym wyjątkiem lub odrzuconą obietnicą i kończy proces Node.js.
- CVE-2026-87029Średnie
undici to biblioteka klienta HTTP dla Node.js. W wersjach 7.15.0 do 7.30.0 oraz 8.0.0 do 8.12.1 interceptor dekompresji przekazuje zdekompresowane dane do handlera bez przechwytywania wyjątków z callbacków strumienia zlib. Gdy handler zgłasza wyjątek asynchronicznie z callbacku zlib, staje się on nieprzechwyconym wyjątkiem, który kończy proces Node.js. Złośliwy serwer HTTP może wysłać małe skompresowane ciało, które dekompresuje się do rozmiaru przekraczającego limit, powodując awarię klienta.
- CVE-2026-87018Wysokie
undici to biblioteka klienta HTTP dla Node.js. W wersjach od 4.2.1 do 6.29.0, od 7.0.0 do 7.30.0 oraz od 8.0.0 do 8.12.1 proces klienta ulega awarii, gdy serwer TLS 1.2 przeprowadzi renegocjację po nawiązaniu połączenia i przedstawi inny certyfikat zaufany przez CA, którego nazwa hosta nie pasuje do żądanego hosta. Node.js ponownie wykonuje weryfikację nazwy hosta na renegocjowanym uzgadnianiu i niszczy gniazdo z błędem certificate-altname, ale obsługa błędów ustanowionego gniazda w undici zakładała, że ten kod błędu nigdy nie wystąpi, więc kontrolowany przez drugą stronę błąd staje się nieprzechwyconym asercją, która kończy proces Node.js, dotykając zarówno ścieżek HTTP/1.1, jak i HTTP/2. Złośliwy lub przejęty punkt końcowy HTTPS osiągany przez undici lub globalny fetch() może zawiesić klienta pojedynczą renegocjacją zainicjowaną przez serwer, powodując awarię wszystkich żądań w locie i pracy w tle, a wykorzystanie nie wymaga kompromitacji CA, ponieważ atakujący kontroluje punkt końcowy i może przedstawić dwa zwykłe ważne certyfikaty. Dotyczy tylko TLS 1.2, ponieważ TLS 1.3 nie obsługuje renegocjacji. Problem naprawiono w undici 6.29.1, 7.30.1 i 8.12.2, a użytkownicy powinni zaktualizować do jednej z tych wersji lub nowszej. Jako obejście należy ograniczyć połączenia wychodzące do TLS 1.3, aby renegocjacja nie mogła wystąpić, gdy docelowe punkty końcowe to obsługują.
- CVE-2026-109932Średnie
Biblioteka undici (wersje 5.15.0-6.29.0, 7.0.0-7.30.0, 8.0.0-8.12.1) ma podatność w kliencie WebSocket, która pozwala złośliwemu serwerowi na wyczerpanie pamięci procesu poprzez wysyłanie ramek PING bez odczytywania odpowiedzi PONG, co prowadzi do nieograniczonego wzrostu kolejki zapisu i sterty.
- CVE-2026-109924Średnie
Biblioteka undici (wersje 6.5.0-6.29.0, 7.0.0-7.30.0, 8.0.0-8.12.1) ma podatność w kliencie EventSource, która pozwala złośliwemu serwerowi na wyczerpanie pamięci procesu poprzez wysyłanie wielu małych pól danych bez separatora lub pojedynczej nieukończonej linii podzielonej na wiele fragmentów, co prowadzi do gromadzenia stanu parsera poza limitami.
- CVE-2026-109869Wysokie
undici, biblioteka klienta HTTP dla Node.js, w wersjach 6.23.0-6.29.0, 7.18.0-7.30.0 i 8.0.0-8.12.1 ulega awarii procesu Node.js, gdy złośliwy serwer zwróci odpowiedź z więcej niż pięcioma kodowaniami treści i zamknie połączenie przed wysłaniem ciała. undici odrzuca taką odpowiedź z powodu limitu kodowań, ale utworzony wcześniej strumień wewnętrzny nie ma podpiętego listenera błędów ani przerwania żądania, więc wczesne zamknięcie powoduje niezobsłużony błąd i zakończenie procesu.
Oryginalny opis (angielski, źródło NVD)
undici is an HTTP client for Node.js. In versions 7.30.1 and 8.12.2 through 8.12.3, when an originless Agent composes the redirect and shared cache interceptors, undici decides whether to store the final response under the original request key by inspecting only the final redirect hop, which bypasses the earlier fix for CVE-2026-109829 that compared only the initial and final origins. A redirect that bounces through an untrusted origin and returns to the trusted origin is still cached under the trusted key, an intermediate hop's Vary is dropped so a response that varies on Authorization or Cookie can be served to a different user, and an intermediate hop's no-cache or default-uncacheable status is ignored so a non-storable redirect is laundered into a cacheable entry. An attacker who controls a redirect target from a trusted URL can poison the cached entry for that URL or have a private, per-user response served to a later caller. The issue is fixed in undici 7.30.2 and 8.12.4, and users should upgrade to one of those versions or later. As a workaround, compose the interceptors as cache then redirect, use per-origin dispatchers and cache stores, or disable shared caching on redirect-capable requests.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

