Skip to main content

node-forge EUVDEUVD-2026-113336

| CVE-2026-118778 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-10-29 GitHub_M GHSA-525v-9gp9-w22h
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
    Await/induce forge TLS client connection
  2. Exploit
    Send ServerHello plus ServerHelloDone, omit Certificate
  3. Execution
    Client reads null serverCertificate.publicKey
  4. Impact
    Uncaught TypeError crashes Node.js process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
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 the victim application to use node-forge's TLS client specifically - forge.tls.createConnection({server:false}) - on a vulnerable version (<= 1.4.0), and to feed received network bytes into connection.process() from a handler that does not catch the thrown exception (the GHSA workaround is to wrap process() in try/catch and close the connection). The attacker must either be the TLS server the client connects to, or an on-path peer able to modify the still-unauthenticated handshake to drop the server Certificate message; no credentials are needed (PR:N). Limiting factors: applications that use Node.js's native TLS stack are NOT affected; only the forge TLS-client code path is vulnerable; and the attacker needs the client to connect to an attacker-controlled/on-path endpoint. Impact is limited to a crash (availability) - there is no confidentiality or integrity impact and no authentication bypass.

Impact

This is a moderate-severity denial-of-service (CWE-476 NULL pointer dereference) in the node-forge TLS *client*, and the signals are internally consistent at a middling priority rather than an emergency. The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H, 5.9) confirms network reach, no authentication (PR:N) and availability-only impact (C:N/I:N - the advisory explicitly states there is no confidentiality or integrity impact and no authentication bypass, since without a certificate the client cannot complete the RSA key exchange). The vuln.today Decision label is 'this_month', indicating a planned-remediation priority, not act_now/emergency. No CISA KEV entry is present, so this is 'no public exploit identified as actively exploited'; however the GHSA advisory includes a detailed Proof of concept and committed regression tests, so a public PoC reference exists - it is not supplied as verified standalone weaponized exploit code. No EPSS score was provided, so exploitation-probability cannot be quantified from this data; absence of EPSS is a gap, not a low score. The vendor's own 3.1 AC:H and the informational 4.0 vector (AC:L/AT:P, 8.2) diverge because 4.0 weights availability higher; I assess the trigger itself as low-complexity (a malicious server simply omits the Certificate message), with the real limiter being that a forge TLS client must connect to an attacker-controlled or on-path-modifiable endpoint - see my independent vector below. Net: a genuine, patch-worthy reliability/DoS bug with a narrow prerequisite (use of the forge TLS client), not a high-urgency RCE.

Exploit ScenarioDerived

An application uses forge.tls.createConnection({server:false}) and connects to a server that is attacker-controlled, or an on-path attacker strips the Certificate (handshake type 11) message from an unauthenticated server's first flight. The client's missing-certificate check reads the wrong property (c.serverCertificate instead of c.session.serverCertificate), so the handshake proceeds to key exchange, dereferences the null certificate's publicKey, and throws an uncaught TypeError out of connection.process() - crashing the Node.js process. A detailed reproduction PoC and regression tests are published in the GHSA advisory.

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

Denial of service in node-forge's TLS client (1.4.0 and earlier) lets a malicious TLS server, or an on-path attacker who strips the server Certificate message, crash applications that call forge.tls.createConnection({server:false}). The client's missing-certificate check reads the wrong property, so the handshake proceeds into RSA key exchange and dereferences the absent certificate, throwing a TypeError out of connection.process() that can terminate a Node.js process when uncaught. The flaw is availability-only (assessed CVSS 3.1: 5.9, AV:N/AC:L/PR:N/UI:N, C:N/I:N/A:H), is not in CISA KEV, and has a public PoC reference in the advisory that is not verified as working exploit code; applications using Node.js's native TLS stack are unaffected.

RemediationAI

Upgrade to node-forge 1.4.1 (npm install node-forge@1.4.1); the vendor release is https://github.com/digitalbazaar/forge/releases/tag/v1.4.1 and the fix commit is 7be9fbd40df2e2f15f29fea2846b1c87d58f6888, per advisory GHSA-525v-9gp9-w22h. If upgrading is not immediately possible, the vendor workaround is to wrap calls to connection.process() in try/catch in the socket data handler and close the connection when an exception occurs; this prevents the process crash but does not restore the intended insufficient_security handshake failure, and applications that rely on verify/error callbacks will not receive them on this path. The patch changes handleServerHelloDone to read c.session.serverCertificate and to fail the handshake even when verify accepts, because RSA key exchange requires the certificate.

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 pure-JavaScript implementation of TLS and related cryptographic primitives. In the client handshake, tls.handleServerHelloDone() is intended to reject a server that sent no Certificate message with a fatal insufficient_security alert after consulting the application's verify callback, but the code tested c.serverCertificate, a property that is never set, instead of c.session.serverCertificate. Because the client state machine permits ServerHelloDone directly after ServerHello, the handshake continues to tls.createClientKeyExchange(), which reads c.session.serverCertificate.publicKey and throws a TypeError on the null certificate; the exception propagates out of connection.process() without invoking the verify or error callbacks. This is CWE-476 (NULL pointer dereference) manifesting as a JavaScript TypeError, and the trigger is specifically the omission of the TLS Certificate message (RFC 5246 section 7.4.2) on an RSA key-exchange handshake. There is no authentication bypass: without a server certificate the client cannot complete RSA key exchange. The fix in 1.4.1 reads c.session.serverCertificate and always fails the handshake with insufficient_security, still calling verify so applications can customize the alert.

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:N/A:H
vuln.today AI 7.5 HIGH

A malicious server trivially omits the Certificate message so AC:L/PR:N/UI:N; crash is same-scope availability only (C:N/I:N/A:H); vendor's AC:H instead reflects the on-path MITM scenario.

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
High
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:44 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, the affected implementation used forge.tls.createConnection(), c.session.serverCertificate, RSA key exchange to process the relevant input or security decision. node-forge's TLS client checked the wrong property when deciding whether a server certificate was missing. A malicious TLS server or on-path peer could omit the Certificate message and reach code that dereferenced the absent certificate, causing an uncaught exception and terminating the connection or process. 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.2%
Top 90% exploitable
Prevalence
High
very popular npm crypto/TLS library, though forge TLS-client feature rarely used
Threat Intel
1
1 source
Social Media
1
Sightings
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
Medium

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

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

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