Podatności Node.js
77 znanych podatności CVE w Node.js, przetłumaczonych i ocenionych.
- 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.
- CVE-2023-30590Wysokie
Funkcja API generateKeys() zwracana przez crypto.createDiffieHellman() generuje tylko brakujące (lub nieaktualne) klucze, to znaczy generuje klucz prywatny tylko wtedy, gdy nie został jeszcze ustawiony, ale funkcja jest również potrzebna do obliczenia odpowiedniego klucza publicznego po wywołaniu setPrivateKey(). Jednak dokumentacja mówi, że to wywołanie API: "Generuje prywatne i publiczne wartości klucza Diffie-Hellman". Udokumentowane zachowanie bardzo różni się od rzeczywistego, a ta różnica może łatwo prowadzić do problemów z bezpieczeństwem w aplikacjach korzystających z tych API, ponieważ DiffieHellman może być używany jako podstawa bezpieczeństwa na poziomie aplikacji, a konsekwencje są szerokie.
- CVE-2023-30588Średnie
Użycie nieprawidłowego klucza publicznego do utworzenia certyfikatu x509 za pomocą API crypto.X509Certificate() powoduje nieoczekiwane zakończenie procesu. Podatność dotyczy wszystkich aktywnych wersji Node.js v16, v18 i v20 i może być wykorzystana do ataku DoS.
- CVE-2023-30585Wysokie
Podatność w procesie instalacji Node.js (.msi) dotyczy użytkowników Windows instalujących Node.js za pomocą instalatora .msi. Podczas operacji naprawy proces msiexec.exe działający w kontekście NT AUTHORITY\SYSTEM próbuje odczytać zmienną środowiskową %USERPROFILE% z rejestru bieżącego użytkownika. Problem pojawia się, gdy ścieżka wskazywana przez %USERPROFILE% nie istnieje; wtedy msiexec.exe próbuje utworzyć tę ścieżkę w niebezpieczny sposób, co może prowadzić do tworzenia dowolnych folderów w dowolnych lokalizacjach. Ponieważ zmienna %USERPROFILE% w rejestrze Windows może być modyfikowana przez zwykłych użytkowników, nieuprzywilejowani aktorzy mogą manipulować kluczem zmiennej środowiskowej, aby oszukać uprzywilejowany proces msiexec.exe, co może skutkować tworzeniem folderów w niezamierzonych, potencjalnie złośliwych lokalizacjach. Podatność dotyczy tylko użytkowników Windows instalujących Node.js za pomocą instalatora .msi; inne metody instalacji nie są narażone.
- CVE-2023-32558Wysokie
W Node.js 20.x użycie przestarzałego API process.binding() może obejść model uprawnień poprzez path traversal. Podatność dotyczy wszystkich użytkowników korzystających z eksperymentalnego modelu uprawnień w Node.js 20.x.
- CVE-2023-2968Wysokie
Zdalny atakujący może wywołać odmowę usługi w zmiennej socket.remoteAddress, wysyłając spreparowane żądanie HTTP. Użycie niezdefiniowanej zmiennej powoduje wyjątek TypeError.
- CVE-2023-23919Wysokie
W Node.js <19.2.0, <18.14.1, <16.19.1 i <14.21.3 istnieje podatność kryptograficzna polegająca na tym, że w niektórych przypadkach stos OpenSSL błędów nie jest czyszczony po operacjach, które mogą go ustawić. Może to prowadzić do fałszywych błędów podczas kolejnych operacji kryptograficznych w tym samym wątku.
- CVE-2023-23918Wysokie
W Node.js <19.6.1, <18.14.1, <16.19.1 i <14.21.3 istnieje podatność na eskalację uprawnień umożliwiająca obejście eksperymentalnej funkcji Permissions i dostęp do nieautoryzowanych modułów poprzez process.mainModule.require(). Dotyczy to wyłącznie użytkowników, którzy włączyli eksperymentalną opcję uprawnień z --experimental-policy.
- CVE-2018-7166Wysokie
We wszystkich wersjach Node.js 10 przed 10.9.0 występuje błąd przetwarzania argumentów, który może spowodować, że Buffer.alloc() zwróci niezainicjowaną pamięć. Metoda ta powinna zwracać tylko zainicjowaną lub wyczyszczoną pamięć. Trzeci argument określający 'encoding' może być przekazany jako liczba, co jest błędnie interpretowane przez wewnętrzną metodę 'fill' jako 'start' operacji wypełniania. Błąd ten może być wykorzystany, gdy argumenty Buffer.alloc() pochodzą z danych wejściowych użytkownika, aby zwrócić nieczyste bloki pamięci zawierające poufne informacje.
- CVE-2018-7159Średnie
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.
- CVE-2018-7158Wysokie
Moduł `'path'` w linii wydań Node.js 4.x zawiera potencjalny wektor ataku typu regular expression denial of service (ReDoS). Wyrażenie regularne `splitPathRe` używane w funkcjach takich jak `path.dirname()`, `path.extname()` i `path.parse()` może powodować długie przetwarzanie specjalnie spreparowanego ciągu znaków, prowadząc do pełnej odmowy usługi. Kod ten został zastąpiony w Node.js 6.x i późniejszych, więc podatność dotyczy tylko wszystkich wersji Node.js 4.x.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

