Podatności Node.js
38 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-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-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-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.
- CVE-2026-58043Wysokie
Błąd w egzekwowaniu modelu uprawnień Node.js może nadmiernie przyznawać dostęp do systemu plików poza granicami prefiksów drzewa radix. Atakujący, który ma dostęp do jednej ścieżki, może nadużyć obsługi granic, aby odczytywać lub zapisywać ścieżki poza zamierzoną listą dozwolonych plików. Podatność dotyczy Node.js main, 22.x, 24.x i 26.x.
- CVE-2026-58040Średnie
W Node.js wykryto niekompletną poprawkę: ponowne użycie sesji TLS w HTTPS Agent pomija weryfikację nazwy hosta między różnymi politykami tożsamości. Dotyczy to wersji 22.x, 24.x i 26.x.
- CVE-2026-56850Średnie
W Node.js wykryto błąd w ponownym użyciu połączeń HTTPS Agent, który powoduje kolizje kluczy w tablicy obiektów PFX. Umożliwia to ponowne użycie tożsamości klienta mTLS między żądaniami skonfigurowanymi z różnymi certyfikatami klienta.
- CVE-2026-56847Średnie
W Node.js wykryto błąd w egzekwowaniu modelu uprawnień: funkcja trace_events.createTracing().enable() zapisuje pliki dziennika śledzenia poza dozwolonym obszarem zapisu (--allow-fs-write).
- CVE-2026-48934Średnie
W Node.js wykryto błąd w weryfikacji hosta TLS, który umożliwia atakującemu ominięcie walidacji certyfikatu. Podatność dotyczy wszystkich wspieranych linii wydań: Node.js 22, Node.js 24 oraz Node.js 26.
- CVE-2026-48933Wysokie
W implementacji WebCrypto w Node.js wykryto błąd, który powoduje awarię procesu, gdy dane wejściowe funkcji `subtle.encrypt()` mają rozmiar będący wielokrotnością 2 GiB. Podatność dotyczy wszystkich wspieranych linii wydań: Node.js 22, Node.js 24 oraz Node.js 26.
- CVE-2026-48618Średnie
Podatność w Node.js związana z obsługą nazw hostów TLS pozwala na obejście uwierzytelniania z powodu niezgodności normalizacji separatora kropek Unicode między resolverem a weryfikatorem. Może to prowadzić do naruszenia poufności danych lub obejścia zamierzonej granicy bezpieczeństwa.
- CVE-2026-48931Niskie
Błąd w agencie HTTP Node.js może spowodować, że klient zaakceptuje odpowiedź wysłaną przed wysłaniem żądania. Podatność dotyczy wszystkich wspieranych linii wydań: Node.js 22, Node.js 24 i Node.js 26.
- CVE-2026-21717Średnie
Błąd w mechanizmie haszowania stringów w V8 powoduje, że stringi przypominające liczby całkowite są haszowane do ich wartości numerycznej, co czyni kolizje haszowania trywialnie przewidywalnymi. Poprzez spreparowanie żądania powodującego wiele takich kolizji w wewnętrznej tabeli stringów V8, atakujący może znacząco obniżyć wydajność procesu Node.js. Najczęstszym wyzwalaczem jest dowolny endpoint wywołujący JSON.parse() na danych kontrolowanych przez atakującego. Podatność dotyczy wersji 20.x, 22.x, 24.x i 25.x.
- CVE-2026-21716Niskie
Niekompletna poprawka dla CVE-2024-36137 pozostawia metody `FileHandle.chmod()` i `FileHandle.chown()` w API opartym na obietnicach bez wymaganych kontroli uprawnień, podczas gdy ich odpowiedniki oparte na wywołaniach zwrotnych (`fs.fchmod()`, `fs.fchown()`) zostały poprawnie załatane. W rezultacie kod działający z `--permission` i ograniczonym `--allow-fs-write` może nadal używać metod `FileHandle` opartych na obietnicach do modyfikowania uprawnień i właściciela plików na już otwartych deskryptorach, omijając zamierzone ograniczenia zapisu. Podatność dotyczy procesów Node.js w wersjach 20.x, 22.x, 24.x i 25.x korzystających z modelu uprawnień.
- CVE-2026-21715Niskie
Błąd w egzekwowaniu systemu plików w modelu uprawnień Node.js pozostawia funkcję `fs.realpathSync.native()` bez wymaganych kontroli uprawnień odczytu, podczas gdy wszystkie porównywalne funkcje systemu plików poprawnie je egzekwują. W rezultacie kod działający z `--permission` i ograniczonym `--allow-fs-read` może nadal używać `fs.realpathSync.native()` do sprawdzania istnienia plików, rozwiązywania celów dowiązań symbolicznych i wyliczania ścieżek systemu plików poza dozwolonymi katalogami. Podatność dotyczy procesów Node.js w wersjach 20.x, 22.x, 24.x i 25.x korzystających z modelu uprawnień.
- CVE-2026-21714Średnie
Wyciek pamięci w serwerach HTTP/2 Node.js występuje, gdy klient wysyła ramki WINDOW_UPDATE na strumieniu 0 (poziom połączenia), powodując przekroczenie maksymalnej wartości okna sterowania przepływem (2³¹-1). Serwer poprawnie wysyła ramkę GOAWAY, ale obiekt Http2Session nigdy nie jest sprzątany. Podatność dotyczy użytkowników HTTP2 na Node.js w wersjach 20, 22, 24 i 25.
- CVE-2026-21713Średnie
Wada w weryfikacji HMAC w Node.js używa porównania nie w stałym czasie podczas walidacji podpisów dostarczonych przez użytkownika, co może ujawniać informacje o czasie proporcjonalne do liczby pasujących bajtów. W pewnych modelach zagrożeń, gdzie możliwe są pomiary czasu o wysokiej rozdzielczości, może to być wykorzystane jako wyrocznia czasowa do odgadnięcia wartości HMAC. Podatność dotyczy wersji 20.x, 22.x, 24.x i 25.x.
- CVE-2026-21711Średnie
Błąd w modelu uprawnień Node.js dotyczącym egzekwowania ograniczeń sieciowych pozostawia operacje serwera Unix Domain Socket (UDS) bez wymaganych kontroli uprawnień, podczas gdy wszystkie porównywalne ścieżki sieciowe poprawnie je egzekwują. W rezultacie kod działający z opcją --permission bez --allow-net może tworzyć i udostępniać lokalne punkty końcowe IPC, umożliwiając komunikację z innymi procesami na tym samym hoście poza zamierzoną granicą ograniczeń sieciowych. Podatność dotyczy procesów Node.js w wersji 25.x używających modelu uprawnień, gdzie --allow-net jest celowo pominięte w celu ograniczenia dostępu do sieci. Uwaga: --allow-net jest obecnie funkcją eksperymentalną.
- CVE-2026-21712Średnie
Wada w przetwarzaniu adresów URL w Node.js powoduje błąd asercji w kodzie natywnym, gdy funkcja url.format() jest wywoływana z nieprawidłową umiędzynarodowioną nazwą domeny (IDN) zawierającą nieprawidłowe znaki, co powoduje awarię procesu Node.js.
- CVE-2025-59465Wysokie
Nieprawidłowo sformułowana ramka HTTP/2 HEADERS z nadmiernie dużymi, nieprawidłowymi danymi HPACK może spowodować awarię Node.js przez wywołanie nieobsłużonego błędu TLSSocket ECONNRESET. Zamiast bezpiecznego zamknięcia połączenia, proces ulega awarii, umożliwiając zdalną odmowę usługi.
- CVE-2025-55131Wysokie
Podatność w Node.js w logice alokacji buforów może ujawnić niezainicjalizowaną pamięć, gdy alokacje są przerywane przy użyciu modułu `vm` z opcją timeout. W określonych warunkach czasowych bufory utworzone przez `Buffer.alloc` i inne instancje `TypedArray` (np. `Uint8Array`) mogą zawierać pozostałości danych z poprzednich operacji, co prowadzi do wycieku tajemnic w procesie (np. tokenów, haseł) lub uszkodzenia danych.

