Description
smol-toml is a small, fast, and correct TOML parser and serializer. Prior to 1.7.1, parse() can enter an infinite loop when a value inside an array or inline table is followed by a comment with no trailing newline. In src/util.ts, skipUntil() calls indexOfNewline(), receives -1 at the end of input, and resets the cursor to the beginning of the string instead of leaving the structure scan. The parser then hangs indefinitely and can consume a service's processing capacity when an application parses attacker-controlled TOML. This issue is fixed in version 1.7.1.
Published: 2026-09-04
Score: 8.2 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

smol-toml is a lightweight TOML parser. A logic flaw in its parse() function causes an infinite loop when a comment follows a value in an array or inline table without a trailing newline. The loop never exits, causing the parsing process to consume processing capacity indefinitely and leading to a denial of service. The vulnerability directly compromises the integrity of the service’s availability, as an attacker can repeatedly submit malicious TOML documents to exhaust system resources. The flaw is a classic example of unchecked input handling and resource exhaustion.

Affected Systems

The affected product is smol-toml, distributed by squirrelchat. All releases prior to v1.7.1 contain the vulnerability; the bug was fixed in commit 30f5c367d946b695f379b5d4f0946b2f0a0a8c2f and released in v1.7.1. Applications that parse TOML input using any version older than 1.7.1 are potentially vulnerable.

Risk and Exploitability

The CVSS score of 8.2 indicates high severity. EPSS is not available, and the issue is not listed in CISA’s KEV catalog. The vulnerability requires an attacker to supply malformed TOML input; if an application accepts such input from a remote source, the attacker can trigger the infinite loop and cause a denial of service. The likely attack vector is remote, through any interface that accepts TOML data.

Generated by OpenCVE AI on September 4, 2026 at 18:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade smol-toml to version 1.7.1 or later.
  • Disable or sandbox the parsing of untrusted TOML data until the upgrade is applied.
  • Add input validation to reject malformed TOML before it reaches the parser to mitigate the risk of resource exhaustion.

Generated by OpenCVE AI on September 4, 2026 at 18:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 04 Sep 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 04 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Description smol-toml is a small, fast, and correct TOML parser and serializer. Prior to 1.7.1, parse() can enter an infinite loop when a value inside an array or inline table is followed by a comment with no trailing newline. In src/util.ts, skipUntil() calls indexOfNewline(), receives -1 at the end of input, and resets the cursor to the beginning of the string instead of leaving the structure scan. The parser then hangs indefinitely and can consume a service's processing capacity when an application parses attacker-controlled TOML. This issue is fixed in version 1.7.1.
Title smol-toml: Denial of Service via malformed TOML documents
Weaknesses CWE-606
CWE-835
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-04T17:40:50.595Z

Reserved: 2026-09-04T14:45:10.649Z

Link: CVE-2026-85730

cve-icon Vulnrichment

Updated: 2026-09-04T17:40:45.655Z

cve-icon NVD

Status : Received

Published: 2026-09-04T16:18:23.417

Modified: 2026-09-04T18:18:07.040

Link: CVE-2026-85730

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T18:30:04Z

Weaknesses
  • CWE-606

    Unchecked Input for Loop Condition

  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')