CVE-2018-7159
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Wysokie ryzykoPercentyl 89 - wyżej niż 89% wszystkich znanych CVE
Streszczenie
Parser HTTP we wszystkich obecnych wersjach Node.js ignoruje spacje w nagłówku Content-Length, co pozwala na interpretację danych takich jak 'Content-Length: 1 2' jako wartości 12. Specyfikacja HTTP nie zezwala na spacje w wartości Content-Length, a parser HTTP Node.js został dostosowany do tej różnicy. Ryzyko bezpieczeństwa dla użytkowników Node.js jest uważane za BARDZO NISKIE, ponieważ trudno, a może być niemożliwe, stworzyć atak wykorzystujący tę wadę w sposób, który nie byłby już możliwy przez podanie nieprawidłowej wartości Content-Length. Podatności mogą istnieć w kodzie użytkownika, który przyjmuje błędne założenia co do dokładności tej wartości w porównaniu z rzeczywistą długością dostarczonych danych. Użytkownicy Node.js tworzący narzędzia HTTP niższego poziomu powinni ponownie sprawdzić długość wszelkich danych wejściowych po zakończeniu parsowania.
Ocena ryzyka
Podatność może prowadzić do błędnych interpretacji długości treści, co w połączeniu z błędnymi założeniami w kodzie użytkownika może umożliwić ataki typu request smuggling lub inne manipulacje żądaniami HTTP.
Rekomendacja
Zaktualizuj Node.js do najnowszej wersji, która zawiera poprawkę, oraz sprawdź kod aplikacji pod kątem założeń dotyczących długości treści.
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 HTTP parser in all current versions of Node.js ignores spaces in the `Content-Length` header, allowing input such as `Content-Length: 1 2` to be interpreted as having a value of `12`. The HTTP specification does not allow for spaces in the `Content-Length` value and the Node.js HTTP parser has been brought into line on this particular difference. The security risk of this flaw to Node.js users is considered to be VERY LOW as it is difficult, and may be impossible, to craft an attack that makes use of this flaw in a way that could not already be achieved by supplying an incorrect value for `Content-Length`. Vulnerabilities may exist in user-code that make incorrect assumptions about the potential accuracy of this value compared to the actual length of the data supplied. Node.js users crafting lower-level HTTP utilities are advised to re-check the length of any input supplied after parsing is complete.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

