Skip to main content

toml-node CVE-2026-114144

| EUVDEUVD-2026-107556 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-21 GitHub_M GHSA-9qmh-m7c6-f92p
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
    Identify endpoint parsing untrusted TOML
  2. Exploit
    Submit document with oversized integer literal
  3. Execution
    BigInt() conversion blocks event loop
  4. Impact
    Concurrent requests stalled, service denied

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

The affected application must call toml-node's toml.parse() on TOML content that an attacker can influence (e.g. uploaded configuration, API/webhook body). No special product feature, flag, or non-default configuration is required - the vulnerable integer path is the parser's default behavior for any hex/octal/binary/decimal integer literal in versions prior to 5.0.1. The exploit requires no authentication (PR:N) and no user interaction (UI:N). The primary limiting factor is input trust: if the TOML parsed is static, operator-supplied, or otherwise trusted, the attacker cannot reach the code path; impact is confined to availability of the single Node.js process/event loop, with no confidentiality or integrity effect.

Impact

All signals are internally consistent and point to a genuine but bounded availability risk. The supplied CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) is corroborated by the description and the source-code evidence: toml.parse() feeds unbounded digit sequences to BigInt() in lib/parser.js before reduceInteger() in lib/compiler.js enforces the 64-bit range, so a single crafted document triggers super-linear CPU work that synchronously blocks the Node.js event loop. Exploitation status is 'no public exploit identified at time of analysis' - there is no CISA KEV listing and no POC flag in the input, and no EPSS score was provided, so exploitation probability cannot be quantified from the data. The impact is strictly availability (C:N/I:N - no data disclosure or integrity loss), which caps this as a denial-of-service issue rather than a code-execution priority despite the HIGH base score. The practical gating factor, not reflected in the CVSS vector, is that the vulnerable code path only executes when the application passes attacker-influenced TOML to the parser; where TOML input is trusted or operator-supplied only, real-world risk is low. Net: a legitimate patch-soon DoS bug for services that parse untrusted TOML, but not a drop-everything priority absent active-exploitation evidence.

Exploit ScenarioDerived

An application uses toml-node (<5.0.1) to parse TOML supplied by untrusted users - for example a config-upload endpoint, a webhook payload, or a multi-tenant build/CI service. The attacker submits a small TOML document containing one extremely long hexadecimal, octal, binary, or decimal integer literal; BigInt() spends super-linear CPU converting it and blocks the single-threaded event loop, stalling all concurrent requests in that process. No public exploit code is identified at time of analysis, but the trigger is trivial to construct from the public advisory and commit diff.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 21, 2026

Denial of service in toml-node versions prior to 5.0.1 allows remote attackers to synchronously block the Node.js event loop by supplying a TOML document containing an extremely long hexadecimal, octal, binary, or decimal integer literal. Because toml.parse() calls BigInt() on the digit sequence before the 64-bit range check runs in reduceInteger(), conversion cost grows super-linearly with digit count, so a single crafted document can stall all concurrent work in the process (CVSS 3.1: 7.5, AV:N/AC:L/PR:N/UI:N, availability-only). The flaw is exploitable only where an application parses attacker-influenced TOML; there is no confidentiality or integrity impact, no public exploit code identified at time of analysis, and the issue is fixed in 5.0.1.

RemediationAI

Upgrade toml-node to version 5.0.1 or later, which adds a pre-conversion length gate (integerNode() with per-radix MAX_INT64_DIGITS limits) so oversized integer literals raise a parse error before BigInt() is invoked; the fix is in commit 9d52e384f6030932174d1afb0d910154dd62dead and documented in advisory GHSA-9qmh-m7c6-f92p. If an immediate upgrade is not possible, compensate at the boundary: enforce a strict maximum request/body size and reject TOML payloads whose integer literals exceed 16 hex, 19 decimal, 21 octal, or 63 binary digits before handing content to toml.parse() (trade-off: legitimate large documents or unusual literals will be refused, and custom pre-scanning must mirror the grammar or it can be bypassed by underscores or leading zeros). Alternatively, run parsing inside a worker thread or child process with a hard CPU timeout so a stalled conversion is terminated rather than blocking the main event loop (trade-off: added architectural complexity and per-parse latency, and the worker still burns CPU and memory until killed). Restricting who can submit TOML to trusted operators removes exposure entirely but is only viable where input trust is genuinely enforceable; note that the later range check in reduceInteger() is not a mitigation on its own.

Affected VersionsENISA

toml-node < 5.0.1

Affected Packages

euvd toml_node fix: 5.0.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

toml-node is a TOML parser for Node.js and the browser, generated from a PEG.js grammar (src/toml.pegjs) into lib/parser.js with semantic actions in lib/compiler.js. In affected builds, the integer rules for hex (0x), octal (0o), binary (0b), and decimal literals passed the raw, underscore-stripped digit sequence straight to BigInt() while building the Integer node. JavaScript BigInt parsing of a numeric string is super-linear in digit count, so a multi-megabyte literal consumes CPU disproportionate to input size and runs synchronously on the main thread. The TOML 64-bit signed range validation performed later by reduceInteger() in the compiler cannot mitigate this, because it executes only after the expensive BigInt() conversion has already completed. This is CWE-400 (Uncontrolled Resource Consumption) - the parser accepts unbounded digit sequences rather than bounding literal length before conversion. The upstream fix (commit 9d52e384) introduces an integerNode() helper that rejects literals exceeding the maximum int64 digit count per radix (63 binary, 21 octal, 19 decimal, 16 hexadecimal) prior to any BigInt() call, while retaining the exact range check in the compiler for values that pass the length gate.

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

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 parsing of attacker-supplied TOML with no interaction (AV:N/AC:L/PR:N/UI:N); event-loop blocking yields A:H only, with no confidentiality or integrity impact.

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 21, 2026 - 22:03 EUVD
CVE Published
Oct 21, 2026 - 20:32 cve.org
HIGH 7.5

DescriptionCVE.org

toml-node is a TOML parser for Node.js and the browser. Prior to 5.0.1, toml.parse() passes unbounded hexadecimal, octal, binary, and decimal digit sequences from lib/parser.js to BigInt() before reduceInteger() in lib/compiler.js checks whether the resulting value fits the TOML 64-bit integer range. Converting a sufficiently long integer string consumes super-linear CPU time and synchronously blocks the Node.js event loop, allowing one attacker-supplied TOML document to deny service to concurrent work in the process. The later range check cannot prevent the conversion cost because it executes after BigInt(). This issue is fixed in version 5.0.1.

Technical POC Analysis

Evidence basis: this breakdown is written from advisory GHSA-9qmh-m7c6-f92p only.

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

toml-node versions prior to 5.0.1 contain a denial-of-service vulnerability that allows an unauthenticated remote attacker to stall the Node.js event loop by submitting a crafted TOML document with an extremely long integer literal, causing all concurrent work in the process to halt. Any application that parses attacker-influenced TOML is affected, leading to service unavailability, though there is no confidentiality or integrity impact. Leadership should prioritize patching because a single malicious input can disrupt business-critical services without authentication.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Medium
npm TOML parser with moderate adoption; not among top-tier TOML libraries
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
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.

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-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

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