CVE-2026-85393
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
Biblioteka node-forge do wersji 1.4.0 nie waliduje liczby elementów w zagnieżdżonych sekwencjach DigestAlgorithm podczas weryfikacji podpisu RSA PKCS#1 v1.5. Atakujący mogą osadzić śmieciowe bajty wewnątrz sekwencji DigestAlgorithm, aby sfałszować prawidłowe podpisy dla dowolnych wiadomości przy użyciu kluczy RSA z niskim wykładnikiem. Jest to niepełna poprawka dla CVE-2026-33894.
Ocena ryzyka
Atakujący może sfałszować podpisy cyfrowe, co może prowadzić do naruszenia integralności danych i autentyczności komunikatów.
Rekomendacja
Należy zaktualizować node-forge do wersji nowszej niż 1.4.0, jeśli dostępna, oraz monitorować porady producenta.
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)
node-forge through 1.4.0 fails to validate element count in nested DigestAlgorithm sequences during RSA PKCS#1 v1.5 signature verification. Attackers can embed garbage bytes inside the DigestAlgorithm sequence to forge valid signatures for arbitrary messages using low-exponent RSA keys. This is an incomplete fix for CVE-2026-33894.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

