CVE-2026-119187
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 36 - wyżej niż 36% wszystkich znanych CVE
Streszczenie
W bibliotece node-forge przed wersją 1.4.1 przetwarzanie odebranych rekordów TLS odbywa się rekurencyjnie, zużywając jedną ramkę stosu JavaScript na rekord w jednym fragmencie wejścia. Zdalny peer może wysłać tysiące małych rekordów naraz i wyczerpać stos wywołań, powodując nieprzechwycony wyjątek i odmowę usługi.
Ocena ryzyka
Atakujący może zdalnie wywołać awarię procesu poprzez wyczerpanie stosu wywołań, powodując odmowę usługi dla aplikacji korzystających z node-forge.
Rekomendacja
Zaktualizuj bibliotekę node-forge do wersji 1.4.1 lub nowszej.
Inne podatności w node-forge
Zobacz wszystkie- CVE-2026-119191Wysokie
W bibliotece node-forge przed wersją 1.4.1 dekodowanie ASN.1 wewnątrz wartości BIT STRING nie stosuje konsekwentnie skonfigurowanego limitu maxDepth i rekurencyjnie zachowuje kopie na każdym poziomie zagnieżdżenia. Złośliwe dane DER z zagnieżdżonymi BIT STRING mogą powodować nadmierną rekurencję, zużycie CPU i kwadratowe zużycie pamięci podczas asn1.fromDer().
- CVE-2026-119190Wysokie
W bibliotece node-forge przed wersją 1.4.1 przestarzałe OID rozszerzeń 2.5.29.10 i 2.5.29.13 są parsowane jako basicConstraints, a pki.verifyCertificateChain() używa pierwszego rozszerzenia o tej nazwie. Jeśli zaufany CA wystawi certyfikat z atakującym dostarczonym przestarzałym rozszerzeniem przed prawdziwym rozszerzeniem basicConstraints, posiadacz certyfikatu może zostać uznany za CA i wystawiać certyfikaty dla dowolnych nazw.
- CVE-2026-119189Średnie
Biblioteka node-forge przed wersją 1.4.1 wymuszała ograniczenie długości ścieżki (basicConstraints.pathLenConstraint) certyfikatu CA tylko wtedy, gdy certyfikat zawierał także rozszerzenie keyUsage. Atakujący posiadający klucz prywatny takiego CA lub podrzędny certyfikat CA mógł zbudować łańcuch przekraczający zadeklarowaną długość ścieżki, który nadal przechodził walidację pki.verifyCertificateChain(). Problem naprawiono w wersji 1.4.1.
- CVE-2026-119188Wysokie
W bibliotece node-forge przed wersją 1.4.1 implementacja forge.tls.createConnection() kontynuuje przetwarzanie po tym, jak rekord TLS innego typu przerwie fragmentaryczną wiadomość handshake. Zdalny peer może wywołać nieprzechwycony TypeError w process(), powodując awarię połączenia lub procesu hostującego.
- CVE-2026-119186Średnie
W bibliotece node-forge przed wersją 1.4.1 opcja tagLength dla AES-GCM przekazywana do start() nie była walidowana podczas odszyfrowywania przez forge.cipher.createDecipher(). Gdy aplikacja wyliczała tagLength z otrzymanych danych lub używała niezdefiniowanej bądź zerowej wartości, a tag uwierzytelniający był pusty lub brakujący, decipher.finish() akceptował nieuwierzytelniony szyfrogram. Problem naprawiono w wersji 1.4.1.
- CVE-2026-118782Wysokie
W bibliotece node-forge w wersjach przed 1.4.1 akceptowano zerową lub ujemną liczbę iteracji dla MAC PKCS#12 oraz szyfrowania opartego na haśle PKCS#12. W rezultacie pki.pbe.generatePkcs12Key() zwracał stały klucz niezależny od hasła i soli, co pozwalało spreparowanym danym PKCS#12 ominąć kontrolę integralności opartą na haśle. Podatne były również przewidywalne klucze szyfrowania i IV dla PBE z pbeWithSHAAnd3-KeyTripleDES-CBC lub pbewithSHAAnd40BitRC2-CBC, w tym zaszyfrowane worki kluczy, zaszyfrowane SafeContents oraz dane PKCS#8 ENCRYPTED PRIVATE KEY przetwarzane przez forge.pki.decryptPrivateKeyInfo(). Treści szyfrowane PBES2/PBKDF2 nie są objęte problemem.
- CVE-2026-118781Niskie
W bibliotece node-forge w wersjach przed 1.4.1 dołączona implementacja jsbn wchodziła w nieskończoną pętlę, gdy BigInteger.prototype.modInverse() otrzymała wartość ujemną lub ujemny modulus. Atakujący mogący kontrolować wykładnik publiczny RSA przekazywany do generowania kluczy lub bezpośredni operand modInverse() mógł zablokować pętlę zdarzeń Node.js przy pełnym użyciu CPU. Wartości DER, PEM, JWK, PKCS#12, X.509 i TLS są bezznakowe i nie mogą wywołać tego problemu.
- CVE-2026-118780Niskie
W bibliotece node-forge przed wersją 1.4.1 funkcja pki.verifyCertificateChain() modyfikowała magazyn CA podczas testowania certyfikatów o tej samej nazwie podmiotu. Nieudana weryfikacja łańcucha mogła trwale usunąć zaufane certyfikaty CA z magazynu, powodując późniejsze błędy weryfikacji prawidłowych łańcuchów.
- CVE-2026-118779Wysokie
W bibliotece node-forge w wersjach przed 1.4.1 funkcja pem.decode() w pliku lib/pem.js używała wyrażeń regularnych o złożoności wielomianowej, m.in. przy wyszukiwaniu pasującej linii END i parsowaniu nagłówków enkapsulowanych. Nieuwierzytelniony atakujący mogący dostarczyć dane PEM do dowolnego parsera wysokiego poziomu mógł zużyć nadmierną ilość CPU długą, zniekształconą wiadomością i spowodować odmowę usługi.
- CVE-2026-118778Średnie
W bibliotece node-forge w wersjach przed 1.4.1 klient TLS sprawdzał niewłaściwą właściwość przy ustalaniu, czy brakuje certyfikatu serwera. Złośliwy serwer TLS lub pośrednik w ścieżce mógł pominąć komunikat Certificate i doprowadzić do wyłuskania nieobecnego certyfikatu, powodując nieprzechwycony wyjątek i zakończenie połączenia lub procesu. Problem dotyczy forge.tls.createConnection(), c.session.serverCertificate oraz wymiany kluczy RSA.
Oryginalny opis (angielski, źródło NVD)
Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, the affected implementation used forge.tls.createConnection(), TLS record processing, process() to process the relevant input or security decision. node-forge processed received TLS records recursively, consuming one JavaScript stack frame per record in a single input chunk. A remote peer could send thousands of small records together and exhaust the call stack, causing an uncaught exception and denial of service. This issue is fixed in version 1.4.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

