
Wprowadzenie do problemu / definicja luki
Zidentyfikowano lukę w popularnej bibliotece kryptograficznej node-forge (Forge) dla JavaScript/Node.js, która pozwala ominąć weryfikację podpisu poprzez spreparowanie struktur ASN.1. Problem opisany jako CVE-2025-12816 otrzymał ocenę wysoką; łatka została opublikowana w wersji 1.3.2 pakietu node-forge. Błąd polega na „rozsynchronizowaniu” walidatora ASN.1, co może prowadzić do błędnej interpretacji danych i uznania ich za poprawnie podpisane, choć w rzeczywistości są nieprawidłowe.
W skrócie
- Czego dotyczy: walidacja ASN.1 w node-forge (funkcja asn1.validate).
- Skutek: możliwe ominięcie weryfikacji podpisów/integralności (np. w PKCS#7/PKCS#12, X.509).
- CVSS: wysoka istotność; CISA-ADP ocenia bazowo 8.6 (CVSS 3.1), GitHub advisory pokazuje bazowo 8.7 (CVSS 4.0).
- Zakres: wszystkie wersje < 1.3.2.
- Naprawa: aktualizacja do 1.3.2 lub nowszej.
- Popularność biblioteki: miliony pobrań tygodniowo w npm → duży zasięg ryzyka łańcucha dostaw.
Kontekst / historia / powiązania
Forge to bogata w funkcje biblioteka kryptograficzna (TLS, PKI, X.509, PKCS#7/#12 itp.) szeroko używana w ekosystemie JavaScript – zarówno bezpośrednio, jak i jako zależność przechodnia w setkach projektów. Lukę zgłosił badacz Hunter Wodzenski (Palo Alto Networks), a koordynację wsparł CERT-CC. CVE opublikowano 25 listopada 2025 r., a tego samego dnia pojawił się advisory GitHub oraz informacja w NVD.
Analiza techniczna / szczegóły luki
Sednem podatności jest interpretation conflict (CWE-436) w walidatorze ASN.1. Atakujący może przygotować spreparowany obiekt ASN.1, który na granicach pól opcjonalnych rozsynchronizowuje walidator, powodując iż opcjonalne pole zostaje semantycznie odczytane jako kolejna struktura obowiązkowa. Skutkuje to m.in.:
- pominięciem krytycznych kroków (np. MAC traktowany jako „brakujący” w PKCS#12),
- błędną interpretacją pól w protokołach wymagających ścisłej struktury (np. X.509).
W praktyce umożliwia to przejście walidacji mimo niepoprawnych kryptograficznie danych i „podłożenie” własnych treści do weryfikacji. Naprawa została zaangażowana w PR #1124, a wersja 1.3.2 zawiera poprawkę i testy regresyjne (m.in. tests/security/cve-2025-12816.js).
Praktyczne konsekwencje / ryzyko
W zależności od zastosowania biblioteki luka może prowadzić do:
- ominięcia uwierzytelniania z użyciem podpisów/certyfikatów,
- akceptacji zmanipulowanych danych jako poprawnie podpisanych (PKCS#7, PKCS#12),
- błędnego użycia funkcji certyfikatowych (X.509), co może wpływać na aktualizacje oprogramowania, podpisy dokumentów czy kanały komunikacji.
CERT-CC ostrzega, iż w środowiskach, gdzie kryptograficzna weryfikacja jest kluczowa dla decyzji zaufania, skutki mogą być znaczące.
Rekomendacje operacyjne / co zrobić teraz
- Natychmiast zaktualizuj node-forge do ≥ 1.3.2 w aplikacjach i bibliotekach.
- Wymuś aktualizację zależności przechodnich:
- Przebuduj lockfile (package-lock.json/yarn.lock/pnpm-lock.yaml) i wdroż ponownie.
- Użyj npm ls node-forge / yarn why node-forge, aby ujawnić, kto w łańcuchu zależności wciąga starą wersję.
- SCA/CI: dodaj reguły w SCA (np. GitHub Dependabot, Snyk) blokujące wersje < 1.3.2.
- SBOM: zaktualizuj SBOM (CycloneDX/SPDX) i zarejestruj zmianę CVE.
- Testy bezpieczeństwa: o ile korzystasz z PKCS#7/PKCS#12/X.509 w Forge, dodaj testy negatywne (odrzuć celowo uszkodzone struktury ASN.1).
- Hardening: rozważ dodatkowe, niezależne sprawdzenia integralności (np. weryfikacja certyfikatów/bundli przez alternatywną implementację) w krytycznych ścieżkach.
- Monitoruj doradztwa projektu i NVD/CERT-CC pod kątem ewentualnych aktualizacji lub wariantów błędu.
Różnice / porównania z innymi przypadkami (jeśli dotyczy)
Ten błąd nie jest klasycznym „psychic signatures” (błędna weryfikacja ECDSA), ani podatnością algorytmiczną. To problem walidacji struktury ASN.1 – warstwa „przed kryptografią”, która może podważyć zaufanie do poprawnie zaimplementowanych prymitywów. Podobne klasy błędów widywano wcześniej w parserach ASN.1 i X.509 w innych projektach; istotą pozostaje zbyt liberalna walidacja i różnice interpretacyjne.
Podsumowanie / najważniejsze wnioski
- CVE-2025-12816 w node-forge pozwala na ominięcie weryfikacji podpisów przez manipulację strukturami ASN.1.
- Aktualizacja do 1.3.2+ jest konieczna; problem dotyczy także wielu zależności pośrednich.
- Zaimplementuj kontrole w łańcuchu dostaw (SCA, SBOM) i testy negatywne dla scenariuszy PKI/PKCS.
- Śledź NVD, CERT-CC i advisory GitHub po dalsze szczegóły i ewentualne uzupełnienia.
Źródła / bibliografia
- BleepingComputer — informacja prasowa i kontekst popularności pakietu (26 mln pobrań/tydz.) oraz informacja o wersji naprawczej 1.3.2 (26 listopada 2025). (BleepingComputer)
- NVD — wpis CVE-2025-12816, wektor CISA-ADP 8.6 (CVSS 3.1), klasyfikacja CWE-436. (NVD)
- CERT-CC — Vulnerability Note VU#521113: opis techniczny, wpływ, zalecenia, potwierdzenie wersji 1.3.2 i PR #1124. (kb.cert.org)
- GitHub Security Advisory (digitalbazaar/forge) — szczegóły techniczne, wersje dotknięte < 1.3.2, naprawa w 1.3.2, CVSS 4.0: 8.7. (GitHub)
- PR #1124 w repozytorium Forge — implementacja poprawki. (GitHub)



