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

CVE-2025-13924

CVE-2025-13924 Cross-Site Request Forgery in Themerex
📅 PUBLISHED: 2025-12-09 17:23 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.01%
👁️
0.01% probability
<1× 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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-13924 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the Advanced Product Fields (Product Addons) for WooCommerce WordPress plugin, versions up to and including 1.6.17. The vulnerability exists in the maybe_duplicate function, which lacks proper nonce validation. This allows an unauthenticated attacker to forge requests that can duplicate and publish product field groups, including those in draft or pending status, provided they can trick a site administrator into performing an action (e.g., clicking a malicious link). The CVSS score is 4.3 (Medium), with a low EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public proof-of-concept or patch details are currently available.

⚡ 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 ecosystem and the Advanced Product Fields for WooCommerce plugin. It is not related to NPM, PyPI, Go, or Ruby packages. The plugin is distributed via the WordPress plugin repository and third-party marketplaces. Users should verify the integrity of their plugin files and ensure they are obtained from trusted sources.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
  • Base Score: 4.3 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: Required (UI:R) – The attacker must trick an administrator into clicking a link or performing an action.
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: Low (I:L) – The attacker can duplicate and publish field groups, potentially altering product configurations.
  • Availability Impact: None (A:N)

Threat Level: Medium. The requirement for user interaction reduces the immediate risk, but the ability to manipulate product fields could lead to further exploitation (e.g., price manipulation, data exfiltration via custom fields).

Deep Dive & Mechanics

The vulnerability resides in the maybe_duplicate function within the plugin’s admin interface. This function is intended to allow administrators to duplicate product field groups. However, it fails to implement a nonce check (CSRF token) to verify that the request originates from the legitimate admin session.

Attack Flow:

  1. An attacker crafts a malicious URL or HTML form that triggers the maybe_duplicate function with specific parameters (e.g., action=duplicate, post_id=X).
  2. The attacker lures a logged-in WordPress administrator to click the link or submit the form (e.g., via phishing email, social engineering, or cross-site scripting on another site).
  3. The administrator’s browser sends the forged request to the WordPress site, including their session cookies.
  4. The plugin processes the request without validating the nonce, duplicating the specified field group and publishing it (even if it was in draft or pending status).

Impact: An attacker can create published copies of sensitive field groups, potentially exposing hidden fields, modifying product pricing, or injecting malicious content into product pages.

Vulnerable vs. Patched Code

Vulnerable Code (<= 1.6.17): The maybe_duplicate function likely lacks a nonce verification call. A typical vulnerable pattern would be:

function maybe_duplicate() {
    if ( isset( $_GET['action'] ) && 'duplicate' === $_GET['action'] ) {
        // No nonce check
        $post_id = intval( $_GET['post_id'] );
        // Duplicate and publish logic
    }
}

Patched Code (Hypothetical): A patched version would include a nonce check:

function maybe_duplicate() {
    if ( isset( $_GET['action'] ) && 'duplicate' === $_GET['action'] ) {
        if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'duplicate_field_group' ) ) {
            wp_die( 'Security check failed.' );
        }
        $post_id = intval( $_GET['post_id'] );
        // Duplicate and publish logic
    }
}

Note: No official patch has been released as of this analysis. Users should monitor the plugin’s update channel.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A WordPress site with the vulnerable plugin installed and activated.
  • An administrator account (for the victim).
  • A way to deliver the forged request (e.g., phishing email, malicious ad).

Exploit Steps:

  1. Identify the target site’s admin URL (e.g., https://target.com/wp-admin/admin.php?page=advanced-product-fields).
  2. Craft a CSRF payload. For example, an HTML form that auto-submits:
<html>
<body>
<form action="https://target.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
    <input type="hidden" name="action" value="maybe_duplicate" />
    <input type="hidden" name="post_id" value="123" /> <!-- ID of a draft field group -->
    <input type="submit" value="Click me" />
</form>
<script>document.getElementById('csrf_form').submit();</script>
</body>
</html>
  1. Host the HTML file on an attacker-controlled server.
  2. Send the link to the administrator (e.g., via email: “Click here to view your invoice”).
  3. Once the admin clicks, the request is sent with their cookies, and the field group is duplicated and published.

Note: No public exploit code is available. The above is a conceptual example.

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual spikes in admin-ajax.php requests from a single IP or user agent.
  • Look for requests to admin-ajax.php with action=maybe_duplicate and no _wpnonce parameter.
  • Alert on creation of new published posts of type field_group (or similar custom post type) outside of normal admin activity.

Prevention:

  • Implement a Web Application Firewall (WAF) rule to block requests to admin-ajax.php that lack a valid nonce.
  • Enforce strict Content Security Policy (CSP) headers to prevent form submission from external origins.
  • Educate administrators about phishing risks and the importance of verifying URLs.

Indicators of Compromise (IOCs)

  • Network:
    • HTTP POST requests to /wp-admin/admin-ajax.php with action=maybe_duplicate and no _wpnonce parameter.
    • Referer header from an external domain (e.g., attacker-controlled site).
  • File System:
    • Unexpected new posts in the field_group custom post type, especially published copies of draft/pending items.
  • Logs:
    • WordPress debug log entries showing wp_die or die calls related to nonce failures (if patched).
    • Web server access logs showing POST /wp-admin/admin-ajax.php with suspicious parameters.

Detection Engineering

YARA Rule

rule Detect_CVE_2025_13924_CSRF_Exploit {
    meta:
        description = "Detects CSRF exploit attempts for CVE-2025-13924 in WordPress logs"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-13924"
    strings:
        $action = "action=maybe_duplicate"
        $post_id = "post_id="
        $no_nonce = "&_wpnonce="
    condition:
        $action and $post_id and not $no_nonce
}

Sigma Rule

title: CVE-2025-13924 CSRF Exploit Attempt
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP requests targeting the maybe_duplicate function without a nonce
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'action=maybe_duplicate'
        cs-uri-query|contains: 'post_id='
        cs-uri-query|not_contains: '_wpnonce='
    condition: selection
falsepositives:
    - Legitimate admin actions if nonce is missing due to plugin bug
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-13924 CSRF Exploit Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=maybe_duplicate"; http_uri; content:"post_id="; http_uri; pcre:"/^(?!.*_wpnonce=).*$/"; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if it is not critical to business operations, until a patch is released.
  2. Apply a virtual patch using a WAF to block requests to admin-ajax.php with action=maybe_duplicate and no nonce.
  3. Restrict admin access to trusted IPs only (e.g., via .htaccess or firewall rules).

Long-Term Fix:

  • Monitor the plugin’s official repository for a patched version (>= 1.6.18).
  • Once available, update immediately.
  • Consider replacing the plugin with an alternative that has a better security track record.

General Best Practices:

  • Always use nonces for state-changing actions in WordPress.
  • Implement CSRF tokens in all admin-facing forms and AJAX handlers.
  • Regularly audit plugins for security vulnerabilities.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ 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.html:"wp-content/plugins/advanced-product-fields-for-woocommerce"
http.html:"advanced-product-fields-for-woocommerce"
http.html:"advanced-product-fields"

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