☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-755
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-58047

CVE-2025-58047 Supply Chain Attack in Plone
📅 PUBLISHED: 2025-08-28 17:10 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.61%
👁️
0.61% probability
15.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-58047 is a high-severity Denial of Service (DoS) vulnerability affecting Volto, the React-based frontend for the Plone Content Management System. An unauthenticated, anonymous attacker can crash the Node.js server process by sending a request to a specially crafted URL. This causes the server to exit with an uncaught exception, leading to service downtime. The vulnerability has a CVSS score of 7.5 (High) and affects multiple version lines of Volto. Patches are available in versions 16.34.0, 17.22.1, 18.24.0, and 19.0.0-alpha.4. The primary risk is service disruption, as the attack requires no authentication and can be executed remotely.

⚡ 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

Supply Chain & Package Security

Volto is distributed as an npm package (@plone/volto). Organizations using Volto should verify their dependency tree to ensure they are not consuming a vulnerable version. The vulnerability is in the server-side Node.js code, not in client-side dependencies. However, any npm-based deployment that uses a vulnerable version of @plone/volto is at risk. The package is a direct dependency for Plone sites using the Volto frontend.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) - The attack is remotely exploitable over the network.
  • Attack Complexity (AC): Low (L) - No special conditions are required; a simple crafted URL is sufficient.
  • Privileges Required (PR): None (N) - The attacker does not need any authentication.
  • User Interaction (UI): None (N) - No user action is required to trigger the vulnerability.
  • Scope (S): Unchanged (U) - The impact is confined to the vulnerable component.
  • Confidentiality (C): None (N) - No data is exposed.
  • Integrity (I): None (N) - No data is modified.
  • Availability (A): High (H) - The server process crashes, causing a complete loss of service.

Threat Level: High. The low attack complexity and lack of authentication requirements make this a significant threat for any publicly accessible Volto instance.

Deep Dive & Mechanics

The vulnerability lies in the Node.js server component of Volto. When a request is made to a specific, malformed URL, the server's request handler fails to catch an exception. This uncaught exception causes the Node.js event loop to terminate, crashing the entire server process.

The root cause is a missing error boundary in the URL parsing or routing logic. The server likely attempts to process a URL parameter or path segment without validating its structure, leading to an exception (e.g., TypeError, RangeError, or a custom error) that propagates to the top level.

The attack is trivial to execute: an attacker sends an HTTP GET request to a crafted URL. The exact URL pattern is not publicly disclosed to prevent mass exploitation, but it is known to be a specific sequence of characters that triggers the unhandled error.

Vulnerable vs. Patched Code

The vulnerable code likely resides in a request handler or middleware that processes incoming URLs. The patched version introduces a try...catch block or a global error handler to gracefully handle the malformed input.

Vulnerable Code (Conceptual):

// server.js (vulnerable)
app.get('/some/route/:param', (req, res) => {
  const value = processParam(req.params.param); // This function may throw
  res.send(`Result: ${value}`);
});

Patched Code (Conceptual):

// server.js (patched)
app.get('/some/route/:param', (req, res) => {
  try {
    const value = processParam(req.params.param);
    res.send(`Result: ${value}`);
  } catch (error) {
    console.error('Error processing request:', error);
    res.status(400).send('Bad Request');
  }
});

The patch ensures that any exception thrown during request processing is caught, logged, and returned as a 400 Bad Request response, preventing the server from crashing.

Exploitation & Lab Setup

Red Team (Offensive)

Objective: Crash the Volto Node.js server process.

Prerequisites:

  • A target Volto instance running a vulnerable version.
  • Network access to the target.

Steps:

  1. Identify the target Volto instance (e.g., https://target.example.com).
  2. Send a crafted HTTP GET request to the specific vulnerable URL. The exact URL is not publicly disclosed, but it can be derived from the patch diff or through fuzzing.
  3. Observe that the server becomes unresponsive. Subsequent requests will fail with connection errors (e.g., ECONNREFUSED).

Example Attack (Hypothetical):

curl -v "https://target.example.com/@@crash?payload=%00%00%00"

Note: The actual payload is not provided to prevent misuse. The above is a conceptual example.

Blue Team (Defensive)

Objective: Detect and prevent exploitation.

Detection:

  • Monitor server logs for uncaught exception errors (e.g., uncaughtException, unhandledRejection).
  • Monitor for sudden server process restarts or crashes.
  • Use a Web Application Firewall (WAF) to block requests matching the known malicious URL pattern (once disclosed).

Prevention:

  • Immediately upgrade to a patched version (16.34.0, 17.22.1, 18.24.0, or 19.0.0-alpha.4).
  • Implement a process manager (e.g., PM2, systemd) to automatically restart the Node.js process if it crashes.
  • Deploy a reverse proxy (e.g., Nginx) in front of Volto to filter malicious requests.

Lab Setup:

  1. Deploy a vulnerable Volto instance (e.g., version 18.0.0) using Docker.
  2. Set up monitoring with Prometheus and Grafana to track process uptime.
  3. Simulate the attack using a script that sends the malicious URL.
  4. Observe the crash and verify that the process manager restarts the service.

Indicators of Compromise (IOCs)

  • Log Entry: An uncaught exception error in the Volto Node.js logs, such as:
    uncaughtException: TypeError: Cannot read properties of undefined (reading 'length')
        at processParam (/app/server.js:42:12)
    
  • Network Traffic: HTTP GET requests to the specific vulnerable URL pattern (exact pattern not disclosed).
  • Process Behavior: The Node.js process exits with a non-zero exit code (e.g., 1).
  • Service Downtime: The Volto frontend becomes unreachable, returning connection refused errors.

Detection Engineering

YARA Rule

rule CVE_2025_58047_Volto_DoS {
    meta:
        description = "Detects log entries indicating uncaught exception in Volto Node.js server"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-58047"
        severity = "high"
    strings:
        $error1 = "uncaughtException" ascii wide nocase
        $error2 = "TypeError" ascii wide nocase
        $error3 = "Cannot read properties of undefined" ascii wide nocase
        $error4 = "processParam" ascii wide nocase
    condition:
        any of ($error*) and #error1 > 0
}

Sigma Rule

title: Volto Node.js Uncaught Exception DoS
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects uncaught exception errors in Volto server logs indicating CVE-2025-58047 exploitation
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-58047
logsource:
    category: application
    product: volto
detection:
    selection:
        - "uncaughtException"
        - "TypeError"
        - "Cannot read properties of undefined"
    condition: selection
falsepositives:
    - Legitimate application errors (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-58047 Volto DoS Attempt"; flow:to_server,established; content:"GET"; http_method; content:"/@@crash"; http_uri; nocase; classtype:attempted-dos; sid:1000001; rev:1;)

Note: The Suricata rule above uses a hypothetical URI pattern (/@@crash). The actual pattern should be substituted once disclosed.

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Volto: Update to the latest patched version for your release line:
    • 16.x: Upgrade to 16.34.0 or later.
    • 17.x: Upgrade to 17.22.1 or later.
    • 18.x: Upgrade to 18.24.0 or later.
    • 19.x: Upgrade to 19.0.0-alpha.4 or later.
  2. Implement Process Restart: Configure a process manager (e.g., PM2, systemd) to automatically restart the Node.js process if it crashes. This mitigates downtime but does not fix the vulnerability.
  3. Deploy WAF Rules: Block requests matching the known malicious URL pattern (once disclosed).

Long-Term Measures:

  • Code Review: Review all request handlers for proper error handling.
  • Input Validation: Implement strict input validation for all URL parameters.
  • Monitoring: Set up alerts for uncaught exceptions and process crashes.
  • Penetration Testing: Regularly test for DoS vulnerabilities.

Workaround: If immediate patching is not possible, deploy a reverse proxy (e.g., Nginx) to filter requests based on URI patterns. Example Nginx rule:

location ~ /@@crash {
    deny all;
    return 403;
}

Valters IT
Securing Digital Frontiers

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