Skip to main content

node-forge EUVDEUVD-2026-113366

| CVE-2026-119189 MEDIUM
Improper Certificate Validation (CWE-295)
2026-10-29 GitHub_M
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Control path-length-constrained CA lacking keyUsage
  2. Delivery
    Issue unauthorized subordinate CA certificate
  3. Exploit
    Mint leaf certificate for target identity
  4. Execution
    Present over-long chain to node-forge verifier
  5. Impact
    verifyCertificateChain 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

forge < 1.4.1

Affected Packages

euvd forge fix: 1.4.1

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

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
vuln.today AI 5.9 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 20:18 EUVD
CVE Published
Oct 29, 2026 - 19:23 cve.org
MEDIUM 5.9

DescriptionCVE.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

EPSS Score
0.2%
Top 94% exploitable
Prevalence
High
node-forge is an extremely popular npm TLS/PKI library, tens of millions of weekly downloads
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
High

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Forge

View all
CVE-2025-12816 HIGH POC
8.6 Nov 25

An interpretation-conflict (CWE-436) vulnerability in node-forge versions 1.3.1 and earlier enables unauthenticated atta

CVE-2020-7720 HIGH POC
7.3 Sep 01

The package node-forge before 0.10.0 is vulnerable to Prototype Pollution via the util.setPath function. Rated high seve

CVE-2026-85393 HIGH
8.7 Sep 03

RSA PKCS#1 v1.5 signature forgery in node-forge through v1.4.0 enables unauthenticated network attackers to craft signat

CVE-2025-66031 HIGH
8.7 Nov 26

Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi

CVE-2026-118779 HIGH
7.5 Oct 29

Regular expression denial of service in node-forge's pem.decode() allows remote, unauthenticated attackers to block the

CVE-2026-119191 HIGH
7.5 Oct 29

Denial of service in node-forge (Forge) 1.3.2 through 1.4.0 lets remote, unauthenticated attackers exhaust CPU time and

CVE-2026-119188 HIGH
7.5 Oct 29

Denial of service in node-forge's JavaScript TLS implementation: a connection created with forge.tls.createConnection()

CVE-2026-119187 HIGH
7.5 Oct 29

Call stack exhaustion in node-forge's TLS record processing (all versions through 1.4.0) allows a remote peer to crash o

CVE-2026-118782 HIGH
7.5 Oct 29

PKCS#12 MAC forgery and constant-key password-based decryption in node-forge 1.4.0 and earlier let anyone who does not k

CVE-2022-24772 HIGH
7.5 Mar 18

Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi

CVE-2022-24771 HIGH
7.5 Mar 18

Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Rated high severi

CVE-2026-119190 HIGH
7.4 Oct 29

Certificate chain validation in node-forge (Forge) through version 1.4.0 can be bypassed because the parser maps the dep

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy