Skip to main content

toml-node CVE-2026-77465

| EUVDEUVD-2026-70739 HIGH
Uncontrolled Recursion (CWE-674)
2026-09-03 GitHub_M GHSA-82x6-q7mm-w9cf
High
Disputed · 7.5 Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Craft ~5-6 KB deeply nested TOML array payload
  2. Delivery
    Send to any network endpoint calling toml.parse()
  3. Exploit
    Parser recurses without depth bound
  4. Execution
    Node.js call stack exhausted
  5. Persist
    Uncatchable RangeError terminates process
  6. Impact
    Denial of service achieved

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitation requires only that the target application calls toml.parse() on data supplied or influenced by the attacker - for example, a REST API that accepts a TOML-formatted request body, a CLI tool that reads user-provided TOML config files, or a build tool that processes workspace manifests. No authentication, no special configuration, and no prior access to the system is required beyond the ability to deliver a crafted TOML document to the parsing call. Exploitation is limited to: (1) applications that accept TOML input from untrusted sources, and (2) Node.js environments running any toml version before 4.2.0. Applications that only ever parse TOML from trusted, internally authored configuration files are not exploitable. The attack payload is reliable on any default Node.js call-stack configuration and does not depend on OS, architecture, or deployment mode.

Impact

CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately characterises this as a network-reachable, low-complexity, unauthenticated denial-of-service with no confidentiality or integrity impact. The primary limiting factor is that exploitation requires the application to pass attacker-controlled data to toml.parse() - not all Node.js applications accept TOML from untrusted sources. However, for those that do (configuration loaders, API gateways accepting TOML bodies, build tooling accepting user-supplied manifests), the attack is trivially automated: a single ~5-6 KB request payload reliably terminates the process on any Node.js version with default stack size. A confirmed PoC is documented in the GHSA advisory. The package's ~47 million monthly downloads represents an unusually broad exposure surface. No CISA KEV listing and no EPSS data are provided, so exploitation prevalence in the wild is unconfirmed. The combination of public PoC, zero prerequisites beyond network access to a parsing endpoint, and extremely wide deployment footprint makes this a genuine priority for any application that parses external TOML.

Exploit ScenarioDerived

An attacker sends a single HTTP POST request containing a TOML body with several thousand nested empty arrays (e.g., a=[[[[[...]]]]]]) totalling about 5-6 KB to any endpoint that calls toml.parse() on the request body. The recursive-descent parser exhausts the Node.js call stack and raises an uncatchable RangeError, crashing the request worker or the entire process. A confirmed PoC demonstrating this on toml 4.1.2 and Node.js v24.16.0 is documented in the GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 03, 2026

Uncontrolled recursion in toml-node (npm package toml, ~47 million monthly downloads) allows remote unauthenticated attackers to crash any Node.js process that parses attacker-controlled TOML input. The Peggy 5.1.0-generated recursive-descent parser has no depth limit in the mutual recursion between peg$parsevalue, peg$parsearray, and peg$parseinline_table_entry; a ~5-6 KB payload of deeply nested arrays reliably exhausts the call stack and raises an uncatchable RangeError that terminates the request worker or process. A confirmed PoC is documented in the GHSA advisory; a patch is available in version 4.2.0 released July 13, 2026.

RemediationAI

Upgrade to toml version 4.2.0 or later via npm install toml@4.2.0 (or update package.json and run npm install). The fix introduces a maxDepth option (default 500 nesting levels) that causes toml.parse() to throw a normal parse error instead of overflowing the call stack; the default is suitable for all valid real-world TOML documents. The configurable limit can be tightened further: toml.parse(input, { maxDepth: 100 }). Patch commit: https://github.com/BinaryMuse/toml-node/commit/967b8b06754f3ecd9863cea118dc50792a8c353f; PR: https://github.com/BinaryMuse/toml-node/pull/72. If upgrading immediately is not possible, a compensating control is to reject TOML input exceeding a conservative byte-length threshold (e.g., reject payloads over 1 KB if deeply nested structures are not expected) or to run the parsing step in an isolated child process with --stack-size limited so a crash does not bring down the main worker. Both workarounds introduce latency or resource overhead and should be treated as temporary bridges to the patch.

Affected VersionsENISA

toml-node < 4.2.0

Affected Packages

npm toml fix: 4.2.0
euvd toml_node fix: 4.2.0

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

toml-node (CPE: cpe:2.3:a:binarymuse:toml-node:*:*:*:*:*:*:*:*) is a TOML 1.0 parser for Node.js distributed as the toml npm package. Its parser (lib/parser.js) is machine-generated by Peggy 5.1.0 as a recursive-descent parser. The grammar encodes TOML values mutually recursively: the value rule delegates to the array rule, which loops over value elements, forming an unbounded recursion cycle proportional to nesting depth. The same cycle applies to inline tables via peg$parseinline_table_entry. CWE-674 (Uncontrolled Recursion) is the root cause - the generated code carries no depth counter or guard, so nesting depth directly maps to call-stack depth. Node.js imposes a finite default call-stack size; exceeding it raises a RangeError: Maximum call stack size exceeded that is not caught by the typical try/catch a caller would write expecting only SyntaxError. The fix in 4.2.0 introduces a depth counter in the generated parser with a configurable maxDepth option (default 500) and throws a normal parse error when exceeded.

Know when Node.js 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

Sources disagree (Low–High)
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

Network-reachable, no auth or interaction needed, pure availability DoS with no confidentiality or integrity impact; matches provided vector.

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
Red Hat 3.5 LOW

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

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
Sep 03, 2026 - 22:02 EUVD
CVE Published
Sep 03, 2026 - 20:37 cve.org
HIGH 7.5

DescriptionCVE.org

toml-node is a TOML parser for Node.js and the browser. Prior to 4.2.0, toml.parse() uses a Peggy 5.1.0 generated recursive-descent parser in lib/parser.js whose peg$parsevalue, peg$parsearray, and peg$parseinline_table_entry functions recurse through nested arrays and inline tables without a depth limit. A remote unauthenticated application parsing an attacker-controlled TOML document containing a few thousand nested arrays or inline tables can exhaust the Node.js call stack, raise an unexpected RangeError rather than the parser's SyntaxError, and terminate an unprotected request worker or process. The corresponding grammar source is src/toml.pegjs, where the generated parser must be bounded. This issue is fixed in version 4.2.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 89 npm packages depend on toml (2 direct, 87 indirect)

Ecosystem-wide dependent count for version 4.2.0.

Technical POC Analysis

The defect is CWE-674, Uncontrolled Recursion, in the toml npm package (toml-node) before 4.2.0.

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

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

The widely-used toml npm package (~47 million monthly downloads) contains an uncontrolled recursion vulnerability with publicly available exploit code, allowing remote unauthenticated attackers to crash any Node.js application that parses untrusted TOML input. This creates critical supply-chain risk across your infrastructure; a small malicious TOML document can trigger immediate service outages, making rapid patching essential for production systems.

Business Impact: High
Compensating Controls

Apply vendor patch: upgrade the toml package to version 4.2.0 or later.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
High
~47 million monthly npm downloads across Node.js ecosystem
Threat Intel
1
1 sources
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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 Yes
EPSS 0.4%
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
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2024-35286 CRITICAL POC
9.8 Oct 21

A vulnerability in NuPoint Messenger (NPM) of Mitel MiCollab through 9.8.0.33 allows an unauthenticated attacker to cond

Vendor StatusVendor

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