Podatności Node.js
77 znanych podatności CVE w Node.js, przetłumaczonych i ocenionych.
- 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.
- CVE-2017-14849Wysokie
Node.js w wersji 8.5.0 przed 8.6.0 umożliwia zdalnym atakującym dostęp do niezamierzonych plików, ponieważ zmiana w obsłudze '..' była niekompatybilna z walidacją ścieżek używaną przez nieokreślone moduły społecznościowe.
- CVE-2017-11499Wysokie
Node.js w wersjach od 4.0 do 4.8.3, wszystkie wersje 5.x, oraz wersje 6.0 do 6.11.0, 7.0 do 7.10.0 i 8.0 do 8.1.3 były podatne na ataki DoS z wykorzystaniem floodingu haszy. Problem wynikał z tego, że nasiona HashTable były stałe w danej wersji Node.js.
- CVE-2016-2216Wysokie
Kod parsowania nagłówków HTTP w Node.js w wersjach 0.10.x przed 0.10.42, 0.11.6 do 0.11.16, 0.12.x przed 0.12.10, 4.x przed 4.3.0 oraz 5.x przed 5.6.0 pozwala zdalnym atakującym na obejście mechanizmu ochrony przed dzieleniem odpowiedzi HTTP za pomocą zakodowanych w UTF-8 znaków Unicode w nagłówku HTTP.
- CVE-2016-2086Wysokie
Node.js w wersjach 0.10.x przed 0.10.42, 0.12.x przed 0.12.10, 4.x przed 4.3.0 oraz 5.x przed 5.6.0 jest podatny na ataki smugglingu żądań HTTP, które mogą być przeprowadzane przez złośliwie skonstruowany nagłówek Content-Length.
- CVE-2015-8027Wysokie
Node.js w wersjach 0.12.x przed 0.12.9, 4.x przed 4.2.3 oraz 5.x przed 5.1.1 nie zapewnia dostępności parsera dla każdego gniazda HTTP, co umożliwia zdalnym atakującym spowodowanie odmowy usługi poprzez złożone żądanie HTTP.
- CVE-2026-21710Wysokie
W Node.js wykryto błąd w obsłudze żądań HTTP, który powoduje nieprzechwycony wyjątek TypeError, gdy nagłówek o nazwie __proto__ jest przesyłany w żądaniu, a aplikacja odczytuje właściwość req.headersDistinct. Wyjątek jest rzucany synchronicznie w getterze właściwości i nie może być przechwycony przez nasłuchiwacze zdarzeń error.
- CVE-2026-21636Krytyczne
Wada w modelu uprawnień Node.js pozwala na obejście ograniczeń sieciowych przez połączenia Unix Domain Socket (UDS), gdy włączona jest opcja `--permission`. Nawet bez `--allow-net`, dane kontrolowane przez atakującego (takie jak URL-e lub opcje socketPath) mogą łączyć się z dowolnymi lokalnymi gniazdami przez net, tls lub undici/fetch. To narusza zamierzoną granicę bezpieczeństwa modelu uprawnień i umożliwia dostęp do uprzywilejowanych usług lokalnych, co może prowadzić do eskalacji uprawnień, wycieku danych lub lokalnego wykonania kodu. Problem dotyczy wersji v25.
- CVE-2025-55130Krytyczne
Podatność w modelu uprawnień Node.js umożliwia ominięcie ograniczeń `--allow-fs-read` i `--allow-fs-write` poprzez użycie spreparowanych względnych ścieżek dowiązań symbolicznych. Łącząc katalogi i dowiązania, skrypt z dostępem tylko do bieżącego katalogu może uciec z dozwolonej ścieżki i odczytać wrażliwe pliki.
- CVE-2023-30589Wysokie
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.
- CVE-2021-44533Średnie
Node.js w wersjach < 12.22.9, < 14.18.3, < 16.13.2 oraz < 17.3.1 nieprawidłowo obsługiwał wielowartościowe Relative Distinguished Names. Atakujący mogli tworzyć tematy certyfikatów zawierające jednowartościowe Relative Distinguished Name, które były interpretowane jako wielowartościowe, na przykład w celu wstrzyknięcia Common Name, co pozwalało na ominięcie weryfikacji tematu certyfikatu. Dotknięte wersje Node.js, które nie akceptują wielowartościowych Relative Distinguished Names, same nie są podatne na takie ataki, ale kod stron trzecich używający niejednoznacznej prezentacji tematów certyfikatów może być podatny.
- CVE-2018-12123Średnie
Node.js we wszystkich wersjach przed 6.15.0, 8.14.0, 10.14.0 i 11.3.0 ma podatność na spoofing nazwy hosta w parserze URL dla protokołu javascript. Jeśli aplikacja używa url.parse() do określenia hosta URL, może on zostać sfałszowany przez użycie mieszanej wielkości liter w protokole "javascript:" (np. "javAscript:"). Inne protokoły nie są dotknięte. Decyzje bezpieczeństwa oparte na nazwie hosta mogą być błędne.
- CVE-2018-12122Wysokie
Wszystkie wersje Node.js przed 6.15.0, 8.14.0, 10.14.0 i 11.3.0 są podatne na atak Slowloris HTTP Denial of Service. Atakujący może wysyłać nagłówki bardzo powoli, utrzymując połączenia HTTP lub HTTPS oraz powiązane zasoby aktywne przez długi czas.
- CVE-2018-12121Wysokie
Node.js we wszystkich wersjach przed 6.15.0, 8.14.0, 10.14.0 i 11.3.0 jest podatny na atak DoS z użyciem dużych nagłówków HTTP. Poprzez kombinację wielu żądań z maksymalnymi nagłówkami (prawie 80 KB na połączenie) i precyzyjnie zaplanowanym zakończeniem nagłówków, można spowodować przerwanie działania serwera HTTP z powodu błędu alokacji pamięci. Ryzyko ataku jest ograniczone przez użycie load balancera lub innej warstwy proxy.
- CVE-2018-12120Wysokie
Node.js we wszystkich wersjach przed 6.15.0: port debuggera 5858 domyślnie nasłuchuje na wszystkich interfejsach. Gdy debugger jest włączony przez `node --debug` lub `node debug`, nasłuchuje na porcie 5858 na wszystkich interfejsach, co może pozwolić zdalnym komputerom na podłączenie się do portu debugowania i wykonywanie dowolnego kodu JavaScript. Domyślny interfejs to teraz localhost. Debugger został usunięty w Node.js 8 i zastąpiony inspektorem, więc wersje 8 i późniejsze nie są podatne.
- CVE-2018-12116Wysokie
Node.js we wszystkich wersjach przed 6.15.0 i 8.14.0 jest podatny na rozdzielanie żądań HTTP (HTTP request splitting). Jeśli Node.js zostanie nakłoniony do użycia nieoczyszczonych danych Unicode dostarczonych przez użytkownika w opcji `path` żądania HTTP, dane te mogą wywołać drugie, nieoczekiwane żądanie HTTP do tego samego serwera.
- CVE-2018-12115Wysokie
Podatność w Node.js (wersje przed 6.14.4, 8.11.4 i 10.9.0) występuje przy kodowaniu UCS-2 (ucs2, ucs-2, utf16le, utf-16le). Metoda Buffer#write() może zapisywać dane poza granicami bufora, gdy zapis rozpoczyna się od przedostatniej pozycji, co prowadzi do błędnego obliczenia maksymalnej długości danych wejściowych.
- CVE-2018-7167Wysokie
Wywołanie Buffer.fill() lub Buffer.alloc() z określonymi parametrami może prowadzić do zawieszenia procesu, co skutkuje odmową usługi (DoS). Podatne są wszystkie wersje Node.js 6.x, 8.x i 9.x; wersje 10.x nie są podatne.
- CVE-2018-7164Wysokie
Node.js w wersjach 9.7.0 i późniejszych oraz 10.x jest podatny (średni stopień ważności). Błąd wprowadzony w 9.7.0 zwiększa zużycie pamięci podczas czytania z sieci do JavaScriptu przy użyciu obiektu net.Socket bezpośrednio jako strumienia.
- CVE-2018-7162Wysokie
Wszystkie wersje Node.js 9.x i 10.x są podatne (wysoki stopień ważności). Atakujący może wywołać odmowę usługi (DoS), powodując awarię procesu Node.js obsługującego serwer HTTP z TLS poprzez wysłanie zduplikowanych lub nieoczekiwanych wiadomości podczas handshake'u.
- CVE-2018-7161Wysokie
Wszystkie wersje Node.js 8.x, 9.x i 10.x są podatne (wysoka waga). Atakujący może wywołać odmowę usługi (DoS) poprzez doprowadzenie do awarii serwera node udostępniającego serwer http2. Można to osiągnąć wchodząc w interakcję z serwerem http2 w sposób wyzwalający błąd czyszczenia, w którym obiekty są używane w kodzie natywnym po tym, jak przestały być dostępne. Zostało to naprawione poprzez aktualizację implementacji http2.
- CVE-2018-7160Wysokie
Inspektor Node.js w wersjach 6.x i nowszych jest podatny na atak DNS rebinding, który może zostać wykorzystany do zdalnego wykonania kodu. Atak jest możliwy ze złośliwych stron internetowych otwartych w przeglądarce na tym samym komputerze lub na innym komputerze z dostępem sieciowym do maszyny uruchamiającej proces Node.js. Złośliwa strona może wykorzystać atak DNS rebinding, aby obejść mechanizmy same-origin policy i umożliwić połączenia HTTP do localhost lub hostów w sieci lokalnej. Jeśli proces Node.js z aktywnym portem debugowania działa na localhost lub hoście w sieci lokalnej, złośliwa strona może połączyć się z nim jako debugger i uzyskać pełny dostęp do wykonywania kodu.
- CVE-2017-15896Krytyczne
Node.js był podatny na lukę w OpenSSL (CVE-2017-3737) związaną z użyciem SSL_read() w przypadku niepowodzenia handshake TLS. Atakujący mógł wysłać dane aplikacji do Node.js, omijając uwierzytelnianie i szyfrowanie TLS.
- CVE-2017-14919Wysokie
Podatność w Node.js przed wersjami 4.8.5, 6.11.5 i 8.8.0 pozwala zdalnemu atakującemu na spowodowanie awarii procesu poprzez wykorzystanie zmiany w module zlib 1.2.9, która sprawia, że wartość 8 dla parametru windowBits jest nieprawidłowa.
- CVE-2026-106074Średnie
Błąd w module `crypto` Node.js powoduje, że wewnętrzne pamięci podręczne entropii używane przez `crypto.randomUUID()`, `crypto.randomUUIDv7()` i `crypto.randomInt()` są zapisywane w snapshotach startowych użytkownika (`--build-snapshot`) i aplikacjach jednoplikowych zbudowanych z `useSnapshot`.
- CVE-2026-106073Niskie
Luka w egzekwowaniu uprawnień systemu plików w modelu uprawnień Node.js sprawia, że fs.realpathSync() nie wykonuje wymaganych sprawdzeń uprawnień do odczytu. To niekompletna poprawka CVE-2026-21715, która objęła jedynie fs.realpathSync.native(). Kod działający z --permission i ograniczonym --allow-fs-read może nadal używać fs.realpathSync() do sprawdzania istnienia plików, rozwiązywania dowiązań symbolicznych i wyliczania ścieżek poza dozwolonymi katalogami.
- CVE-2026-106072Średnie
Błąd w weryfikacji nazwy hosta TLS w Node.js pozwala certyfikatowi z tylko DNS SAN na uwierzytelnienie punktu końcowego IP, gdy klient łączy się przy użyciu niekanonicznej pisowni IPv4, takiej jak `0177.0.0.1`, `0x7f.0.0.1`, `2130706433` lub `127.1`.
- CVE-2026-106071Niskie
Luka w egzekwowaniu uprawnień systemu plików w modelu uprawnień Node.js może przyznać dostęp do ścieżek niezgodnych z regułą wieloznaczną --allow-fs-read lub --allow-fs-write. Gdy żądana ścieżka jest krótsza niż prefiks uprawnienia wieloznacznego, wyszukiwanie w drzewie radix kończy porównywanie wcześniej i uznaje ścieżkę za zgodną — np. --allow-fs-read=/etc/passwd.* zezwala również na odczyt /etc/passwd. Wymaga to, aby uprawnienie wieloznaczne znajdowało się bezpośrednio pod korzeniem drzewa uprawnień.
- CVE-2026-106070Niskie
Luka w API zlib.ZipFile w Node.js może powodować zwracanie bajtów nienależących do żądanego wpisu, gdy walidacja nagłówka lokalnego i centralnego nie powiedzie się. Gdy odczytywane jest zipEntry.modified na archiwum, którego nagłówek lokalny nie zgadza się z katalogiem centralnym, błąd walidacji jest przechwytywany, ale sparsowany nagłówek lokalny pozostaje w pamięci podręcznej bez przesunięcia zawartości — późniejszy odczyt zwraca bajty kontrolowane przez atakującego, a weryfikacja CRC-32 nadal przechodzi. Skaner oparty na Node.js może zatwierdzić inną zawartość niż inna implementacja ZIP wyodrębni z tego samego archiwum.
- CVE-2026-106069Wysokie
Błąd w weryfikacji nazwy hosta TLS w Node.js może spowodować, że certyfikat serwera zostanie zweryfikowany względem innego adresu IP niż ten, z którym połączył się klient, gdy host jest niekanonicznym literałem IPv4 z wiodącym zerem, np. `0127.0.0.1`.
- CVE-2026-105483Wysokie
Błąd w weryfikacji nazwy hosta TLS w Node.js pozwala certyfikatowi bez pasującego adresu IP SAN na uwierzytelnienie połączenia z adresem IPv4, gdy host jest zapisany znakami nie-ASCII, np. pełnoszerokimi cyframi (`127.0.0.1`).
- CVE-2026-105482Wysokie
Błąd w rozwiązywaniu DNS w Node.js pozwala na ciche obcięcie nazw hostów zawierających bajt NUL przez funkcje dns.resolve*() i dns.reverse(). Jest to niekompletna poprawka CVE-2026-48930, która obejmowała tylko dns.lookup() i opcje hosta net/tls.
- CVE-2026-105481Średnie
Błąd w ponownym użyciu połączenia HTTP Agent w Node.js może spowodować, że klient zaakceptuje jako ważną odpowiedź wysłaną przed wysłaniem żądania. Jest to niekompletna poprawka CVE-2026-48931.
- CVE-2026-48932Niskie
Podatność w kliencie HTTP Node.js może powodować desynchronizację żądań w przypadku serwerów proxy opartych na Node.js, które odtwarzają nagłówki wychodzące z widocznych nagłówków IncomingMessage, jednocześnie przesyłając oryginalne ciało żądania do ponownie używanego połączenia.
- CVE-2026-56848Wysokie
W Node.js występuje błąd w obsłudze HTTP/2, który pozwala na ponowne wywołanie funkcji `nghttp2_session_mem_send()` podczas wykonywania `nghttp2_session_mem_recv()`, co prowadzi do użycia po zwolnieniu (heap-use-after-free). Podatność dotyczy wersji Node.js 26.x, 24.x i 22.x.
- CVE-2026-58045Średnie
Podatność w Node.js pozwala na sfałszowanie byteLength obiektu TypedArray, co wywołuje osiągalne asercje w synchronicznych API node:zlib, powodując awarię całego procesu. Wszystkie 11 synchronicznych funkcji zlib jest dotkniętych. Wielokrotne wykorzystanie może prowadzić do odmowy usługi. Dotyczy Node.js w wersjach 22.x, 24.x i 26.x.
- CVE-2026-58044Niskie
Podatność w kliencie HTTP Node.js powoduje desynchronizację żądań w serwerach proxy opartych na Node.js, które odtwarzają nagłówki wychodzące z widocznych nagłówków `IncomingMessage`, jednocześnie przesyłając oryginalne ciało żądania do ponownie używanego połączenia backendu. Node.js może pominąć nagłówki przekraczające `maxHeadersCount`/`maxHeaderPairs` w `req.headers`, `req.rawHeaders` i `req.headersDistinct`, ale nadal używać ich wewnętrznie do ramowania wiadomości HTTP, w szczególności ukrywając `Content-Length` przed aplikacją, podczas gdy ciało żądania jest nadal dostarczane.
- CVE-2026-58042Średnie
Funkcja dns.resolveAny() w Node.js może spowodować przerwanie działania procesu, gdy odpowiedź DNS zawiera więcej niż 256 rekordów A. Wielokrotne wywołanie tego warunku może prowadzić do odmowy usługi. Podatność dotyczy wersji Node.js 26.x, 24.x i 22.x.
- CVE-2026-58041Średnie
Podatność w Node.js w module node:sqlite pozwala nieaktualnemu iteratorowi StatementSyncIterator, utworzonemu przez DatabaseSync#createTagStore(), na kontynuowanie wykonywania zapisanego przygotowanego zapytania po jego zresetowaniu i ponownym powiązaniu z nowymi parametrami. SQLTagStore resetuje zapisane zapytania bezpośrednio przez sqlite3_reset(), omijając mechanizm unieważniania iteratorów wprowadzony dla StatementSync w najnowszych wydaniach.
- CVE-2026-56846Wysokie
Podatność w obsłudze HTTP/2 w Node.js pozwala, aby zachowane bloki nagłówków HTTP/2 ominęły limit maxSessionMemory, co może prowadzić do zdalnego wyczerpania pamięci. Dotyczy wersji Node.js 24.x i 22.x.
- CVE-2026-58039Niskie
Node.js w wersjach 22.x, 24.x i 26.x zawiera podatność w modelu uprawnień (Permission Model), która pozwala na zapis i nadpisywanie plików przez process.report poza ścieżkami dozwolonymi przez --allow-fs-write. Może to prowadzić do naruszenia poufności lub obejścia zamierzonej granicy bezpieczeństwa.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

