Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessControl path-length-constrained CA lacking keyUsage
-
DeliveryIssue unauthorized subordinate CA certificate
-
ExploitMint leaf certificate for target identity
-
ExecutionPresent over-long chain to node-forge verifier
-
ImpactverifyCertificateChain accepts, trust boundary bypassed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
|
| Exploitation Conditions | Requires all of the following per the advisory: an application using node-forge <=1.4.0 that calls forge.pki.verifyCertificateChain() (including TLS peer verification via forge.tls); a CA certificate carrying basicConstraints with a pathLenConstraint and NO keyUsage extension that chains to a root the application trusts; and an attacker who either holds that CA's private key or has obtained a subordinate CA certificate issued by it, enabling creation of further sub-CAs. Key LIMITING factors: public web PKI CA certificates normally include keyUsage and are therefore not affected - only private PKIs whose CA certificates were created without keyUsage are exposed; the attacker must already possess trusted CA signing capability, which bounds who can exploit this. Documented workarounds are an options.verify/verify callback that rejects a CA at depth d whose pathLenConstraint < d-1, or re-issuing the constrained CA with a keyUsage extension including keyCertSign; node-forge itself offers no workaround and the complete fix is upgrading to 1.4.1. |
| Impact | This is a moderate, highly conditional trust-boundary flaw rather than a broadly exploitable emergency. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N, 5.9) correctly captures the shape: network-reachable and requiring no privileges on the verifying application, but with high attack complexity and impact limited to integrity (C:N/A:N) - the flaw lets a certificate chain exceeding its declared pathLenConstraint pass pki.verifyCertificateChain(). The AC:H reflects the substantial precondition stated in the advisory: the attacker must hold the private key of a path-length-constrained CA that lacks a keyUsage extension and chains to a root the application trusts, or obtain a subordinate CA certificate from it. The vendor also published an informational CVSS 4.0 vector (8.2) that scores higher because 4.0 reweights the attack preconditions as AT:P with AC:L; the advisory explicitly states the severity rating follows the 3.1 score of Moderate. No EPSS score was provided in the input, so exploitation-probability cannot be compared against the other signals - this gap should be noted rather than assumed low. This vulnerability is NOT in CISA KEV and there is no indication of active exploitation; a proof-of-concept is public (see exploit scenario). The vuln.today priority is 'this_month', consistent with a real but non-emergency issue. Net: prioritize patching for anyone operating a private PKI whose CA certificates were minted without keyUsage, but realistic widespread exploitation is constrained by the requirement that the attacker already control a trusted, suitably-malformed CA. |
| Exploit ScenarioDerived | In an organization running a private PKI, an intermediate CA was issued with basicConstraints pathLenConstraint=0 but no keyUsage extension and chains to a root trusted by an application that uses node-forge (<=1.4.0) for chain or TLS peer verification. An attacker holding that intermediate's key - or one issued a subordinate CA certificate by it - mints an unauthorized sub-CA and then a leaf certificate for an identity they do not control (e.g. evil.example.com), and node-forge accepts the full chain despite the pathLen=0 violation. A working proof-of-concept is public: it is published in the GHSA-h46v-rmh6-fq4f advisory and committed to the fix as a regression test (tests/pocs/ghsa-h46v-rmh6-fq4f.js), so it is demonstration code rather than verified weaponized tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 29, 2026
Certificate chain verification in node-forge (Forge) through 1.4.0 silently ignores a CA certificate's basicConstraints pathLenConstraint whenever that CA lacks a keyUsage extension, so chains that exceed the declared path length still pass forge.pki.verifyCertificateChain(). Remote attackers are the relevant threat model (CVSS:3.1/AV:N/AC:H/PR:N/UI:N, 5.9 Moderate, CWE-295), but exploitation is heavily gated: the attacker must already hold the private key of a path-length-constrained CA that chains to an application-trusted root, or have obtained a CA certificate from it, and public web PKI CAs normally include keyUsage, so exposure is concentrated in private PKIs whose CA certificates were issued without it. The upstream advisory ships a public PoC reference (tests/pocs/ghsa-h46v-rmh6-fq4f.js) demonstrating that a pathLenConstraint=0 intermediate without keyUsage is accepted; that PoC is not verified as working exploit code and there is no public exploit identified at time of analysis, and no confirmed active exploitation (CISA KEV). Fixed in node-forge 1.4.1.
RemediationAI
Vendor-released patch: upgrade node-forge to 1.4.1, which enforces basicConstraints pathLenConstraint for CA certificates regardless of whether a keyUsage extension is present (https://github.com/digitalbazaar/forge/releases/tag/v1.4.1, advisory https://github.com/digitalbazaar/forge/security/advisories/GHSA-h46v-rmh6-fq4f). node-forge itself ships no workaround, but the advisory documents two: applications that pass an options.verify callback to pki.verifyCertificateChain() (or verify to forge.tls.createConnection()) can reject any chain in which a CA certificate at depth d has basicConstraints.pathLenConstraint < d - 1 - this requires custom callback code and must be maintained in every verifying application, and it only protects code paths that actually use that callback; alternatively, re-issue the constrained CA certificates with a keyUsage extension that includes keyCertSign, which restores enforcement on unfixed versions but requires control of the issuing CA and certificate re-issuance, with the side effect that clients not owned by you continue to trust the old certificate until it is replaced. Until either is in place, inventories should be checked for private-PKI CA certificates that carry pathLenConstraint without keyUsage, since public web PKI CA certificates normally include keyUsage and are not the exposure path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
node-forge is a pure-JavaScript implementation of TLS and X.509 primitives; the affected routine is pki.verifyCertificateChain() in lib/x509.js, which is also reached by TLS peer certificate verification through forge.tls. The bug is an improper certificate validation flaw (CWE-295). In the pre-1.4.1 code the path-length check was guarded by a test of whether a keyUsage extension was present (keyUsageExt ! null && 'pathLenConstraint' in bcExt); that keyUsage test was originally a stand-in for 'a basicConstraints extension exists'. Since node-forge 1.4.0 (GHSA-2328-f5f3-gj25 / CVE-2026-33896) basicConstraints is mandatory for any certificate reaching this check, so the surviving effect of the guard is to skip pathLenConstraint enforcement entirely for CA certificates without keyUsage. RFC 5280 permits CA certificates without keyUsage, and section 6.1.4 steps (l)-(m) process path length independently of keyUsage; section 4.2.1.9 defines pathLenConstraint solely inside basicConstraints. The 1.4.1 fix (based on PR #1142) changes the guard to bcExt ! null so pathLenConstraint is enforced whenever basicConstraints is present, adds regression tests in tests/unit/x509.js and the reporter's PoC as tests/pocs/ghsa-h46v-rmh6-fq4f.js. The advisory notes CVSS 4.0 scores this higher (8.2, AV:N/AC:L/AT:P) but the severity rating follows CVSS 3.1.
Know when Forge gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
No privilege on the verifying app (PR:N) and network-reachable (AV:N), but the attacker must control a trusted, keyUsage-less constrained CA (AC:H); impact is a trust/integrity bypass only, so C:N/A:N and I:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, node-forge enforced an X.509 CA certificate's basicConstraints.pathLenConstraint only when that certificate also carried a keyUsage extension. Exploitation requires a path-length-constrained CA without keyUsage that chains to a root trusted by the application, and an attacker who holds that CA's private key or obtains a subordinate CA certificate from it. The attacker could then construct a chain exceeding the declared path length that still passed pki.verifyCertificateChain(). Public web PKI CA certificates normally include keyUsage; private PKIs with CA certificates created without it are more likely to be affected. This issue is fixed in version 1.4.1.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
An interpretation-conflict (CWE-436) vulnerability in node-forge versions 1.3.1 and earlier enables unauthenticated atta
The package node-forge before 0.10.0 is vulnerable to Prototype Pollution via the util.setPath function. Rated high seve
RSA PKCS#1 v1.5 signature forgery in node-forge through v1.4.0 enables unauthenticated network attackers to craft signat
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi
Regular expression denial of service in node-forge's pem.decode() allows remote, unauthenticated attackers to block the
Denial of service in node-forge (Forge) 1.3.2 through 1.4.0 lets remote, unauthenticated attackers exhaust CPU time and
Denial of service in node-forge's JavaScript TLS implementation: a connection created with forge.tls.createConnection()
Call stack exhaustion in node-forge's TLS record processing (all versions through 1.4.0) allows a remote peer to crash o
PKCS#12 MAC forgery and constant-key password-based decryption in node-forge 1.4.0 and earlier let anyone who does not k
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi
Certificate chain validation in node-forge (Forge) through version 1.4.0 can be bypassed because the parser maps the dep
EUVD-2026-113366
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB