Skip to main content

node-forge CVE-2026-118775

| EUVDEUVD-2026-113332 LOW
Integer Overflow or Wraparound (CWE-190)
2026-10-29 GitHub_M GHSA-4642-5mcj-2rqw
3.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted out-of-range OID string
  2. Exploit
    Pass application's string-based OID authorization check
  3. Execution
    oidToDer() truncates first arc to a trusted OID
  4. Impact
    Emit certificate/CSR/ASN.1 structure with substituted OID

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a specific application pattern on node-forge <= 1.4.0: the app must (1) accept an OID string from untrusted input, (2) check or authorize that string (e.g. against an OID allowlist), and (3) then encode it with asn1.oidToDer() when building certificates, CSRs, or other ASN.1 structures from user-supplied extension/attribute OIDs. The limiting factors that reduce real-world risk: the accept-check-then-encode flow must exist (applications that do not re-encode untrusted OIDs, or that validate the first two arcs, are unaffected); DER parsing is NOT affected; and there is no confidentiality or availability impact (integrity only). Per the advisory, the trigger is the specific out-of-range OID input (first arc not 0/1/2, or second arc >39 under arcs 0/1), which is precisely what the fix in 1.4.1 rejects.

Impact

This is a genuinely low-priority issue despite being worth patching. CVSS 3.1 scores it 3.7 (Low) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N - network-reachable and unauthenticated (PR:N) in principle, but AC:H reflects that exploitation depends on a specific application pattern rather than a default code path, and the only impact is Integrity Low (C:N/A:N). The vuln.today decision label is 'monitor', consistent with the low score. No EPSS probability was supplied and the CVE is not listed in CISA KEV, so there is no signal of active or widespread exploitation. A working proof-of-concept is published in the GHSA advisory (GHSA-4642-5mcj-2rqw), demonstrating that '0.42.840.113549.1.1.1' encodes to the DER of rsaEncryption; this confirms the bug is trivially reproducible but does not by itself indicate in-the-wild use. Note a signal discrepancy worth recording: the advisory's informational CVSS 4.0 vector (AV:N/AC:L/AT:P/.../VI:L, score 6.3, Moderate) rates higher than 3.1 purely because of 4.0's heavier integrity weighting - severity here follows the 3.1 Low rating. The practical risk hinges entirely on whether a given application accepts untrusted OID strings, authorizes them as strings, and then re-encodes them; most node-forge consumers do not, so for most deployments this is high-reach-in-theory but low-real-risk. It is also explicitly an incomplete-fix follow-up to CVE-2025-66030.

Exploit ScenarioDerived

An application accepts an OID string from an untrusted user (for example an extension or attribute OID when building a certificate or CSR), validates or authorizes that string against an allowlist, and then passes it to asn1.oidToDer() on node-forge <= 1.4.0. An attacker submits an out-of-range OID such as '0.42.840.113549.1.1.1' (or '4294977127.18.840.113549.1.1.1'), which passes the string check but wraps during encoding to the DER of a different, trusted OID (rsaEncryption, 1.2.840.113549.1.1.1), defeating the authorization decision. A runnable proof-of-concept is included in the GHSA advisory.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 29, 2026

OID-based authorization bypass in node-forge through 1.4.0: asn1.oidToDer() fails to range-check the first two arcs of an OID string, so input such as 0.42.840.113549.1.1.1 is encoded as the DER of rsaEncryption (1.2.840.113549.1.1.1). This affects only applications that accept an OID string from untrusted input, check or authorize that string, and then re-encode it with node-forge when building certificates, CSRs or other ASN.1 structures; DER parsing is unaffected and there is no confidentiality or availability impact. node-forge 1.4.1 fixes the truncation, a public PoC reference exists in the GHSA (not verified as working exploit code), and this is a genuinely low-priority issue despite being worth patching (vuln.today: monitor).

RemediationAI

Upgrade to node-forge 1.4.1, which makes asn1.oidToDer() throw for OIDs with out-of-range first arcs and correctly encodes/decodes multi-byte first subidentifiers; see GHSA-4642-5mcj-2rqw and release v1.4.1. If upgrading is not immediately possible, the vendor's workaround is to validate OID strings from untrusted input before passing them to node-forge: the first arc must be 0, 1 or 2, and the second arc at most 39 when the first arc is 0 or 1. Applications that accept such OIDs will need to reject them rather than rely on node-forge's previous truncating behavior, and any OID authorization decision should be made on the validated string (and, where feasible, re-checked against the encoded DER). No other vendor workaround is listed.

Affected VersionsENISA

forge < 1.4.1

Affected Packages

npm node-forge fix: 1.4.1
euvd forge fix: 1.4.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, 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 JavaScript implementation of TLS and ASN.1. Under X.690 section 8.19, the first two arcs of an object identifier are encoded as a single subidentifier, 40*arc1+arc2; the first arc must be 0, 1 or 2, and the second must be at most 39 when the first is 0 or 1. In lib/asn1.js, asn1.oidToDer() computed that value and wrote it with putByte(), which retains only the low 16 bits; an out-of-range first arc therefore wraps (CWE-190, integer overflow/wraparound) and emits the DER of a different, valid OID. The flaw is an incomplete fix for CVE-2025-66030 (GHSA-65ch-62r8-g69g, fixed in 1.3.2), which added a 32-bit check only for later arcs. The same code also encoded and decoded the first subidentifier as a single byte, so valid OIDs with a first subidentifier above 127 (e.g. 2.999) were incorrect; 1.4.1 rejects out-of-range first arcs and uses base-128 encoding for the first subidentifier, incorporating public PR #1148. Affected package is npm/node-forge <=1.4.0; CPE cpe:2.3:a:digitalbazaar:forge. The assessed CVSS 3.1 vector is AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N (3.7); the advisory notes CVSS 4.0 would rate it 6.3 but severity follows 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 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 3.7 LOW

AC:H because exploitation depends on the application's non-default accept-check-then-encode OID workflow; PR:N as the attacker only supplies an untrusted string; integrity-only impact (I:L), no C/A effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/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
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 19:18 EUVD
CVE Published
Oct 29, 2026 - 18:35 cve.org
LOW 3.7

DescriptionCVE.org

Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, asn1.oidToDer() in lib/asn1.js did not range-check the first two arcs of an OID. An application that accepted an untrusted OID string, checked or authorized that string, and then encoded it with asn1.oidToDer() could emit DER representing a different, trusted OID from the one that was checked. DER parsing is not affected. This issue is fixed in version 1.4.1.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 6 npm packages depend on node-forge (3 direct, 3 indirect)

Ecosystem-wide dependent count for version 1.4.1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
High
very widely used npm TLS/crypto library, millions of weekly downloads
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

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