Skip to main content

node-forge EUVDEUVD-2026-113337

| CVE-2026-118779 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-29 GitHub_M GHSA-7wch-p9px-956x
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Submit small crafted malformed PEM to parser endpoint
  2. Exploit
    Trigger polynomial-time regex in pem.decode()
  3. Impact
    Block Node.js event loop, denying service to all requests

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

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

Exploitation Conditions

Exploitation requires that the application pass attacker-controlled PEM text to any high-level node-forge parser, all of which route through pem.decode() - including pki.certificateFromPem(), pki.privateKeyFromPem(), pki.publicKeyFromPem(), pki.certificationRequestFromPem(), pki.encryptedPrivateKeyFromPem(), pki.decryptRsaPrivateKey(), and pkcs7.messageFromPem(). No special configuration or feature flag is needed and no authentication is required (PR:N); default behavior of these APIs is vulnerable on versions <= 1.4.0. The practical limiting factor is purely architectural: the attacker must reach a code path that feeds untrusted PEM to node-forge (e.g. certificate/key/CSR upload, SAML metadata, or certificates in user-supplied documents or config). The vendor notes that rejecting untrusted PEM larger than a few kilobytes reduces but does not eliminate the delay (about 7 KB still blocked ~0.4 s on 1.4.0), so size limits are not a complete mitigation; updating to 1.4.1 is the complete fix.

Impact

This is a genuine, actionable priority for affected deployments, but its ceiling is bounded by impact type. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5 High) describes a remote, unauthenticated, low-complexity attack requiring no user interaction, and the evidence confirms the mechanism: a polynomial-time (ReDoS) regular expression in pem.decode() that blocks the Node.js event loop for seconds to minutes on tens-of-kilobytes of crafted input. All impact is on availability only - C:N/I:N - so this is a denial-of-service issue, not a path to data exposure or code execution. No EPSS score and no KEV status were provided in the input, so exploitation probability and confirmed in-the-wild use cannot be assessed; absence of these signals is not evidence against risk, but it means urgency rests on the published advisory, a public PoC, and the vuln.today 'this_week' decision label rather than on observed attacks. The advisory and repository publish working proof-of-concept code with measured timings (about 24 s for 29 KB on 1.4.0), which lowers the barrier to opportunistic abuse. The main thing that narrows real-world exposure is architectural, not score-based: only applications that actually feed attacker-controlled PEM to a high-level node-forge parser are reachable (see exploitation_conditions). For those, treat it as a patch-this-week item consistent with the decision label; for deployments that never parse untrusted PEM, real risk is low despite the High rating.

Exploit ScenarioDerived

A service that accepts user-supplied PEM - for example an endpoint that parses uploaded certificates, keys, CSRs, or certificates embedded in SAML metadata or config - passes that text to a node-forge parser such as pki.certificateFromPem(). A remote, unauthenticated attacker submits a small (tens of KB) malformed PEM crafted to trigger the polynomial-time regex, blocking the single-threaded Node.js event loop for seconds to minutes per request and starving all other requests; repeated requests keep the process unavailable. A working proof-of-concept is published in the GHSA advisory and the project's tests/pocs directory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 29, 2026

Regular expression denial of service in node-forge's pem.decode() allows remote, unauthenticated attackers to block the Node.js event loop for seconds to minutes by supplying crafted PEM text of a few tens of kilobytes to any high-level parser, including pki.certificateFromPem(), pki.privateKeyFromPem(), pki.certificationRequestFromPem() and pkcs7.messageFromPem(). All versions up to and including 1.4.0 are affected, and the flaw is rated CVSS 3.1 7.5 with availability-only impact (C:N/I:N/A:H). A public proof-of-concept is documented in the vendor advisory GHSA-7wch-p9px-956x, which reports roughly 24 seconds of blockage from a 29 KB input on version 1.4.0; no CISA KEV entry is indicated in the supplied intelligence, and the vuln.today priority is this_week.

RemediationAI

Vendor-released patch: node-forge 1.4.1, available from the project's v1.4.1 release tag (https://github.com/digitalbazaar/forge/releases/tag/v1.4.1) and detailed in advisory GHSA-7wch-p9px-956x (https://github.com/digitalbazaar/forge/security/advisories/GHSA-7wch-p9px-956x), with the upstream change visible in commit 412345db583cd28a9d23636d0d93e9f751b935f3. Upgrading every dependency that resolves node-forge to 1.4.1 is the complete fix, because the underlying regular expressions in pem.decode() are replaced by a linear-time scanner. The vendor's documented workaround - rejecting untrusted PEM input larger than a few kilobytes before it reaches node-forge - narrows the attack window but does not eliminate it: on 1.4.0 about 7 KB of crafted input still blocked the event loop for roughly 0.4 seconds, while the 1.4.1 release rejects the same inputs in milliseconds. Node.js processes that accept uploaded certificates, keys or CSRs, or that parse certificates from configuration, SAML metadata or other user-supplied documents, should be treated as exposed until the 1.4.1 upgrade is deployed.

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 related cryptographic structures, and its lib/pem.js module underpins every API that accepts PEM-encoded certificates, keys, CSRs and PKCS#7 messages. The vulnerable version located PEM messages with a single regular expression whose optional encapsulated-header group and body group are adjacent, lazy, and draw from overlapping character classes (whitespace and the base64 alphabet), while the overall match must terminate in an END line whose label back-references the BEGIN label. When no matching END line exists, the regex engine explores every possible split between the two groups, for every candidate label split and at every BEGIN line, producing polynomial backtracking - roughly cubic with repeated mismatched BEGIN/END lines and quadratic with a BEGIN line followed by many newlines. Two additional quadratic cases existed in encapsulated-header parsing: per-line trimming with /\s+$/ and an unanchored header regex that retried at every position of a long colon-free line. These map to CWE-400 (Uncontrolled Resource Consumption), specifically CWE-1333 (Inefficient Regular Expression Complexity). The 1.4.1 fix replaces the message regex with a scanner that indexes END lines once and matches each BEGIN line in linear time, trims header lines with a loop, and anchors header matching to the start of a printable-character run; the only behavioral change is that a label containing '-----' now resolves to the shortest label, which is valid because RFC 7468 labels cannot contain '--'. The affected package is identified by CPE cpe:2.3:a:digitalbazaar:forge and by EUVD as forge < 1.4.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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote unauthenticated input to any PEM parser with no user interaction gives AV:N/AC:L/PR:N/UI:N; event-loop exhaustion is availability-only, so C:N/I:N/A:H.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 19:18 EUVD
CVE Published
Oct 29, 2026 - 18:45 cve.org
HIGH 7.5

DescriptionCVE.org

Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, the affected implementation used pem.decode(), lib/pem.js, missing END line to process the relevant input or security decision. node-forge used polynomial-time regular expressions in pem.decode(), including when searching for a matching END line and parsing encapsulated headers. An unauthenticated attacker able to supply PEM input to any high-level parser could consume excessive CPU with a long malformed message and cause denial of service. 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.

Technical POC Analysis

Bug class: CWE-400 (Uncontrolled Resource Consumption), specifically CWE-1333 (Inefficient Regular Expression Complexity) - catastrophic/polynomial backtracking in a regular expression.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-118779 is a high-severity availability vulnerability in the widely used node-forge library that can freeze Node.js applications for seconds to minutes when processing maliciously crafted PEM input. Any internet-facing service that parses certificates, keys, or PKCS#7 messages using node-forge is at risk, potentially causing service outages and disrupting customer-facing operations. Leadership should prioritize remediation this week given the public proof-of-concept.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.6%
Top 54% exploitable
Prevalence
High
node-forge is a very widely used npm TLS/crypto library
Threat Intel
1
1 source
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 HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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

CVE-2025-66030 MEDIUM
6.3 Nov 26

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

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