Podatności Node.js
57 znanych podatności CVE w Node.js, przetłumaczonych i ocenionych.
- 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-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-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-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

