CVE-2025-66031
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 36 - wyżej niż 36% wszystkich znanych CVE
Streszczenie
Forge (zwany także node-forge) to natywna implementacja Transport Layer Security w JavaScript. Podatność niekontrolowanej rekurencji w node-forge w wersjach 1.3.1 i wcześniejszych umożliwia zdalnym, nieuwierzytelnionym atakującym tworzenie głębokich struktur ASN.1, które wywołują nieograniczone parsowanie rekurencyjne. Prowadzi to do odmowy usługi (DoS) poprzez wyczerpanie stosu podczas parsowania niezaufanych danych wejściowych DER. Problem naprawiono w wersji 1.3.2.
Ocena ryzyka
Zdalny atakujący może wywołać awarię aplikacji lub usługi, powodując niedostępność usługi.
Rekomendacja
Zaktualizuj bibliotekę node-forge do wersji 1.3.2 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-119187Wysokie
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.
- 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.
Oryginalny opis (angielski, źródło NVD)
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. An Uncontrolled Recursion vulnerability in node-forge versions 1.3.1 and below enables remote, unauthenticated attackers to craft deep ASN.1 structures that trigger unbounded recursive parsing. This leads to a Denial-of-Service (DoS) via stack exhaustion when parsing untrusted DER inputs. This issue has been patched in version 1.3.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

