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

CVE-2026-68914

CVE-2026-68914 Vulnerability in Mojolicious
📅 PUBLISHED: 2026-09-18 00:00 UTC 🔄 UPDATED: 2026-10-18 04:58 UTC
⊘ CVE REJECTED / WITHDRAWN
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Open Source
VULNERABLE: < 9.47 (pure-Perl Mojo::JSON backend only)
CVSS VECTOR BREAKDOWN 7.5
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: N Confidentiality None
I: N Integrity None
A: H Availability High
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Threat Intelligence Report — CVE-2026-68914

Executive Summary

CVE-2026-68914 is a denial-of-service vulnerability in Mojolicious, a real-time web framework for Perl. Prior to version 9.47, the pure-Perl implementation of the Mojo::JSON module enforces no nesting depth limit when the Cpanel::JSON::XS backend is unavailable or when the MOJO_NO_JSON_XS environment variable is enabled. An attacker who can supply untrusted JSON to decode_json, from_json, or j can submit deeply nested arrays or objects, causing unbounded recursion, memory exhaustion, and process crash.

Only applications running the pure-Perl decoder path are affected; deployments using the Cpanel::JSON::XS backend are not vulnerable because that backend already enforces a nesting limit. The issue is fixed in Mojolicious 9.47. No public PoC, exploit code, or Nuclei template exists at the time of writing, and the CVE has not been added to CISA KEV.

⚡ 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

Technical Analysis

Vulnerability Class

CWE-400 (Uncontrolled Resource Consumption) manifests here as an algorithmic/resource exhaustion issue driven by unbounded recursion. JSON is a recursive data format: an array may contain arrays, which may contain objects, which may contain further arrays, without an inherent structural ceiling in the data model itself. A parser that recursively descends into nested containers will allocate stack frames and heap for each level of nesting. If the parser does not cap the depth, a single crafted document can force the decoder to recurse arbitrarily deep.

Affected Component

The vulnerability resides in the pure-Perl implementation of Mojo::JSON. Mojolicious maintains two JSON decoding paths:

  1. XS-accelerated path — delegates to Cpanel::JSON::XS, which enforces a maximum nesting depth internally. Deployments on this path are not affected.
  2. Pure-Perl fallback path — used when Cpanel::JSON::XS is not installed, or when the MOJO_NO_JSON_XS environment variable is set to force the pure-Perl implementation.

Per the NVD description, the pure-Perl path "does not limit nesting depth." The decoder functions exposed to application developers and framework internals — decode_json, from_json, and j — are the entry points described as accepting untrusted JSON.

Mechanism

  1. An attacker supplies a JSON payload consisting of deeply nested arrays or objects (e.g., thousands of [ characters before any closing brackets, or an equivalent structure using nested object literals).
  2. The pure-Perl decoder recursively parses each nesting level without a depth ceiling.
  3. Each level consumes stack and heap resources. At sufficient depth, this produces unbounded recursion, memory exhaustion, and ultimately a process crash.

Because the flaw is in the decode path, any Mojolicious application that parses attacker-controlled JSON with the pure-Perl backend is exposed — including API endpoints that accept JSON request bodies.

Why the XS Backend Is Safe

The description explicitly states the Cpanel::JSON::XS backend "already enforces a nesting limit." This is the reason the vulnerability is conditional: it only materializes on the pure-Perl code path. The fix in 9.47 brings the pure-Perl implementation to parity by imposing its own nesting depth limit.

Technical Detail Availability

The CVE description does not disclose the specific depth threshold, the exact function signature, or the internal recursion method name. Those implementation specifics are not available and are not fabricated here. The vulnerability class — uncontrolled recursion depth in a JSON decoder — is well understood and does not require inventing internal identifiers to reason about.


Exploitation Scenarios

No public PoC, exploit code, or Nuclei template is available. The following attack chain is inferred strictly from the vulnerability class and the NVD description. No specific code patterns, internal function names, or endpoints beyond those named in the description are asserted.

1. Reconnaissance / Target Identification An attacker identifies a Mojolicious-based web application that accepts JSON input. Because the vulnerability only affects installations running the pure-Perl Mojo::JSON decoder, the attacker's primary reconnaissance question is whether the target runs without Cpanel::JSON::XS or with MOJO_NO_JSON_XS enabled. This condition is most likely on minimal or constrained Perl environments where XS dependencies were deliberately omitted or disabled. Fingerprinting may rely on framework behavior visible at the application layer, but no reliable remote distinguisher is documented.

2. Triggering the Flaw Class The attacker identifies any request path that causes the application to decode attacker-supplied JSON via decode_json, from_json, or j. This is typical for JSON-accepting API endpoints. The attacker constructs a payload containing deeply nested arrays or objects — the exact depth required is not published, but the exploit primitive is unbounded nesting.

3. Payload / Execution Method At the vulnerability-class level, exploitation is a resource-exhaustion attack: transmit a JSON document whose nesting depth is large enough to exhaust available stack or heap during recursive decoding. No authentication may be required if the vulnerable decode path is reachable from an unauthenticated request handler; the CVE description does not state an authentication precondition. The delivery mechanism is simply a malformed-but-syntactically-deep JSON body.

4. Post-Exploitation Impact Successful exploitation causes unbounded recursion, memory exhaustion, and process crash — a denial-of-service condition. Depending on the deployment model, impact ranges from a single request-handler failing to complete, to worker process termination, to full service unavailability if process supervision repeatedly restarts and re-crashes the affected worker. There is no described path to code execution, data disclosure, or privilege escalation; the sole impact is availability.

Attacker Requirements: Network reachability to a JSON-consuming endpoint on an affected pure-Perl-backend deployment. No credentials are described as necessary in the CVE text.


Impact Assessment

Confidentiality: None — the vulnerability does not expose data. Integrity: None — the vulnerability does not modify data. Availability: High — memory exhaustion and process crash of the decoding process.

Because no CVSS score was assigned by NVD, the vector above (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) is an estimated rating reflecting an unauthenticated, network-reachable, low-complexity availability impact against a single scope. It should be treated as provisional until an authoritative score is published.

Affected Systems: Any Mojolicious deployment prior to 9.47 that decodes untrusted JSON using the pure-Perl Mojo::JSON path (i.e., Cpanel::JSON::XS unavailable, or MOJO_NO_JSON_XS set). Public-facing REST APIs, webhooks, and JSON-accepting form handlers built on Mojolicious are the most likely blast-radius targets.

Blast Radius: Limited to the process crashing. In multi-worker deployments, a single crafted request may only take down one worker; however, an attacker willing to send repeated requests can sustain a denial-of-service against the service. Applications that exclusively use the XS backend have zero exposure.

Exploitability: No public exploit exists, and MOJO_NO_JSON_XS / missing-XS conditions are environment-specific, which raises the practical bar. However, the flaw is trivial to trigger where the vulnerable path is active. EPSS has not yet scored this CVE.


Detection Guidance

Detection must focus on anomalous JSON nesting depth in inbound requests and on crash/restart patterns in Mojolicious worker processes. Because the flaw is a resource-exhaustion class, network and application-layer rules should inspect payload structure rather than a specific exploit signature.

Sigma Rule

title: Suspicious Deeply Nested JSON Payloads Targeting Mojolicious (CVE-2026-68914)
id: 4f1c9c2a-7b3e-4d21-9a5e-mojolicious68914
status: experimental
description: Detects HTTP requests containing excessively nested JSON, indicative of
  resource-exhaustion attempts against the pure-Perl Mojo::JSON decoder.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-68914
author: valtersit.com Threat Intelligence
date: 2026/01/01
logsource:
  category: webserver
  product: perl
detection:
  selection_method:
    cs-method:
      - 'POST'
      - 'PUT'
      - 'PATCH'
  selection_content:
    cs-content-type|contains: 'application/json'
  selection_body|re: '(\[|{)(\s*(\[|{)){500,}'
  condition: selection_method and selection_content and selection_body
falsepositives:
  - Legitimate deeply nested configuration payloads (rare)
  - Machine-generated JSON with unusual structure
level: medium
tags:
  - attack.t1190
  - cwe.400

YARA Rule

rule CVE_2026_68914_Mojolicious_Deep_JSON
{
    meta:
        description = "Detects deeply nested JSON payloads associated with CVE-2026-68914 resource exhaustion in Mojo::JSON pure-Perl decoder"
        author = "valtersit.com Threat Intelligence"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-68914"
        date = "2026-01-01"
        severity = "medium"

    strings:
        // Detect long runs of opening brackets/braces characteristic of nesting attacks
        $deep_arr = /\[(\s*\[){200,}/
        $deep_obj = /\{(\s*\{){200,}/
        $mixed     = /\[\{(\s*\[\{){200,}/

    condition:
        any of ($deep_arr, $deep_obj, $mixed)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-68914 Mojolicious Mojo::JSON Deeply Nested JSON DoS Attempt"; flow:established,to_server; http.method; content:"POST"; http.request_body; pcre:"/(\[|\{)(\s*(\[|\{)){500,}/R"; classtype:attempted-dos; sid:99068914; rev:1; metadata:created_at 2026_01_01, cve CVE_2026_68914, cwe CWE-400;)

Elastic Detection

process where event.type == "start" and
  process.name in ("perl", "perl5", "mojolicious") and
  (process.args : "*MOJO_NO_JSON_XS*" or process.parent.args : "*MOJO_NO_JSON_XS*")
// Companion EQL for crash/restart correlation
process where process.name == "perl" and
  event.action == "process-crashed" and
  process.command_line : "*Mojolicious*"

Splunk SPL Query

index=web sourcetype=access_combined OR sourcetype=mojolicious
method=POST
| eval nest_depth = mvcount(split(body, "[")) + mvcount(split(body, "{"))
| where nest_depth > 500
| stats count min(_time) as first_seen max(_time) as last_seen values(uri_path) as paths by src_ip
| where count > 0
| sort - count
index=app sourcetype=perl_app
("Mojo::JSON" OR "decode_json" OR "from_json" OR "MOJO_NO_JSON_XS")
("out of memory" OR "deep recursion" OR "process crash" OR "worker exit")
| stats count by host, process_id, message

Wazuh OSSEC Rule

<group name="web,mojolicious,cve-2026-68914,">
  <rule id="10068914" level="10">
    <if_sid>31100</if_sid>
    <field name="url">\.json|/api/</field>
    <regex type="pcre2">(?i)(\[\s*\[|{\s*{){100,}</regex>
    <description>CVE-2026-68914: Possible deeply nested JSON DoS attempt against Mojolicious pure-Perl decoder</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>cwe_400,denial_of_service,</group>
  </rule>

  <rule id="10068915" level="12">
    <if_sid>10068914</if_sid>
    <match>out of memory</match>
    <description>CVE-2026-68914: Memory exhaustion following deep JSON decode - likely exploitation</description>
    <group>cwe_400,denial_of_service,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch status: 0/4 — UNPATCHED by tracked sources. No vendor patch source has been confirmed in the tracked intelligence feeds. The NVD description, however, states the issue is fixed in version 9.47, and this should be verified directly against the official Mojolicious release before relying on it operationally. Treat the 9.47 upgrade as the vendor-stated resolution while confirming via the official distribution channel.

1. Immediate Mitigations

  • Determine whether any Mojolicious deployment is running the pure-Perl decoder path. Audit for the absence of Cpanel::JSON::XS in the Perl environment and for the MOJO_NO_JSON_XS environment variable being set. If MOJO_NO_JSON_XS is present and unnecessary, unset it and install Cpanel::JSON::XS to move the deployment onto the depth-limited backend.
  • Where the pure-Perl path cannot be immediately changed, apply an upstream reverse-proxy or WAF rule that rejects JSON bodies exceeding a safe nesting depth (the Suricata and Wazuh signatures above can be adapted for inline enforcement).
  • Constrain worker resources (memory limits, process supervision with backoff) to reduce the blast radius of a single crashing worker.

2. Patch / Upgrade Steps

  • Upgrade Mojolicious to 9.47 or later, which the CVE description states adds a nesting depth limit to the pure-Perl Mojo::JSON decoder. Verify the package source and digest for authenticity before deployment.
  • After upgrade, confirm the decoder enforces a depth limit by testing representative nested payloads in a staging environment.

3. Long-Term Hardening

  • Prefer the Cpanel::JSON::XS backend in production for both performance and its pre-existing depth-limit protection; treat the pure-Perl decoder as a compatibility fallback rather than a default.
  • Enforce request body size and structural complexity limits at the edge (reverse proxy / API gateway) for all JSON-accepting endpoints.
  • Monitor worker crash/restart rates for Mojolicious processes as an availability signal, and alert on sustained restarts.
  • Track the CVE for an authoritative CVSS score and any EPSS movement, since neither is currently published.

References

  1. NVD — CVE-2026-68914: https://nvd.nist.gov/vuln/detail/CVE-2026-68914
  2. Mojolicious project / CPAN distribution (vendor source for version 9.47): https://metacpan.org/dist/Mojolicious
  3. MITRE CWE-400 — Uncontrolled Resource Consumption: https://cwe.mitre.org/data/definitions/400.html
  4. MITRE ATT&CK T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
  5. CISA Known Exploited Vulnerabilities Catalog (verify current status): https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Threat Actor / Exploit-in-the-Wild Evidence: None. No public PoC, exploit code, Nuclei template, or CISA KEV listing exists at the time of writing. No associated threat actor campaigns have been identified. EPSS has not yet been scored by FIRST.org.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-68914/ · 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.