CVE-2023-30589
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Bardzo wysokie ryzykoPercentyl 90 - wyżej niż 90% wszystkich znanych CVE
Streszczenie
Parser llhttp w module http w Node.js v20.2.0 nie wymusza ścisłego używania sekwencji CRLF do rozdzielania żądań HTTP. Sam znak CR (bez LF) wystarcza do rozdzielenia pól nagłówka HTTP, co może prowadzić do podatności HTTP Request Smuggling (HRS). Problem dotyczy wszystkich aktywnych wersji Node.js: v16, v18 i v20.
Ocena ryzyka
HTTP Request Smuggling może pozwolić atakującemu na przemycanie żądań, obejście kontroli bezpieczeństwa, zatruwanie pamięci podręcznej lub przejęcie sesji innych użytkowników. Ryzyko jest szczególnie wysokie w środowiskach z serwerami proxy lub load balancerami.
Rekomendacja
Zaktualizuj Node.js do wersji zawierającej poprawkę dla tej podatności. Sprawdź konfigurację serwerów proxy i load balancerów pod kątem spójnego parsowania nagłówków HTTP.
Inne podatności w Node.js
Zobacz wszystkie- CVE-2026-21637Wysokie
Podatność w obsłudze błędów TLS w Node.js pozwala zdalnemu atakującemu na awarię lub wyczerpanie zasobów serwera TLS, gdy używane są wywołania zwrotne `pskCallback` lub `ALPNCallback`. Wyjątki synchroniczne zgłaszane podczas tych wywołań omijają standardowe ścieżki obsługi błędów TLS, co prowadzi do natychmiastowego zakończenia procesu lub cichego wycieku deskryptorów plików, a w konsekwencji do odmowy usługi.
- CVE-2025-59466Wysokie
W Node.js wykryto błąd w obsłudze błędów, przez który błędy „Maximum call stack size exceeded” stają się nieprzechwytywalne, gdy włączony jest `async_hooks.createHook()`. Zamiast trafić do `process.on('uncaughtException')`, proces kończy się, co czyni awarię nieodwracalną. Aplikacje korzystające z `AsyncLocalStorage` (wersje v22, v20) lub `async_hooks.createHook()` (wersje v24, v22, v20) stają się podatne na awarie typu denial-of-service wywołane głęboką rekurencją w określonych warunkach.
- CVE-2025-59464Wysokie
Podatność powoduje wyciek pamięci w integracji OpenSSL w Node.js podczas konwersji pól certyfikatu X.509 do UTF-8 bez zwalniania bufora. Aplikacje wywołujące socket.getPeerCertificate(true) powodują wyciek pamięci przy każdym polu certyfikatu, co umożliwia zdalnym klientom ciągły wzrost zużycia pamięci przez powtarzane połączenia TLS.
- CVE-2025-23166Wysokie
Metoda C++ SignTraits::DeriveBits() może niepoprawnie wywołać ThrowException() na podstawie danych wejściowych dostarczonych przez użytkownika podczas wykonywania w wątku tła, powodując awarię procesu Node.js. Takie operacje kryptograficzne są powszechnie stosowane do niezaufanych danych wejściowych, co potencjalnie pozwala atakującemu na zdalne wywołanie awarii środowiska Node.js.
- CVE-2025-23085Średnie
W Node.js występuje wyciek pamięci, gdy zdalny peer nagle zamyka gniazdo bez wysłania powiadomienia GOAWAY lub gdy nghttp2 wykryje nieprawidłowy nagłówek i zakończy połączenie. Może to prowadzić do zwiększonego zużycia pamięci i potencjalnego ataku typu denial of service.
- CVE-2024-22018Niskie
W Node.js zidentyfikowano podatność dotyczącą użytkowników eksperymentalnego modelu uprawnień, gdy używana jest flaga --allow-fs-read. Wadliwy model uprawnień nie ogranicza pobierania statystyk plików poprzez API fs.lstat, w wyniku czego złośliwi aktorzy mogą uzyskać statystyki plików, do których nie mają wyraźnego dostępu do odczytu. Podatność dotyczy wszystkich użytkowników korzystających z eksperymentalnego modelu uprawnień w Node.js 20 i Node.js 21.
- CVE-2024-22020Średnie
Luka w Node.js pozwala obejść ograniczenia importu sieciowego poprzez osadzanie importów niebędących sieciowymi w adresach URL typu data. Umożliwia to atakującemu wykonanie dowolnego kodu i naruszenie bezpieczeństwa systemu.
- CVE-2024-27982Średnie
W serwerze HTTP najnowszej wersji Node wykryto krytyczną podatność, gdzie zniekształcone nagłówki mogą prowadzić do przemytu żądań HTTP. Umieszczenie spacji przed nagłówkiem content-length powoduje jego nieprawidłową interpretację, umożliwiając atakującemu przemycenie drugiego żądania w treści pierwszego.
- CVE-2024-27983Wysokie
Atakujący może całkowicie unieruchomić serwer HTTP/2 Node.js, wysyłając niewielką liczbę pakietów z ramkami HTTP/2. Pozostawienie danych w pamięci nghttp2 po resecie, gdy nagłówki z ramką CONTINUATION są przetwarzane, a klient nagle zamyka połączenie TCP, powoduje warunek wyścigu i wyczerpanie zasobów.
- CVE-2015-7384Wysokie
Node.js w wersjach 4.0.0, 4.1.0 oraz 4.1.1 umożliwia zdalnym atakującym spowodowanie odmowy usługi.
Oryginalny opis (angielski, źródło NVD)
The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS). The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

