CVE-2025-64226
Executive Summary
CVE-2025-64226 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the Stockie Extra WordPress plugin by Colabrio, versions up to and including 1.2.11. This vulnerability allows an attacker to perform unauthorized actions on behalf of an authenticated administrator, such as modifying plugin settings or triggering unintended operations, without the victim's consent. The attack requires social engineering to trick a logged-in admin into clicking a malicious link or visiting a crafted page. The CVSS score is 4.3 (Medium), with a low EPSS probability of 0.0%, indicating limited active exploitation in the wild. No public proof-of-concept (PoC) or exploit code is available at this time, and the vendor has not released a patch.
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.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. Users should verify the integrity of the plugin files and monitor for updates from the vendor. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed to initiate the attack.
- User Interaction (UI): Required (R) – Victim must click a link or visit a page.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality Impact (C): None (N) – No data disclosure.
- Integrity Impact (I): Low (L) – Unauthorized actions can be performed.
- Availability Impact (A): None (N) – No denial of service.
Threat Level: Medium. The attack requires user interaction and has limited impact, but it can lead to unauthorized configuration changes in the WordPress environment.
Deep Dive & Mechanics
The vulnerability resides in the Stockie Extra plugin, which likely handles AJAX requests or form submissions without proper CSRF tokens. In WordPress, CSRF protection is typically implemented via nonces (number used once). If the plugin fails to validate nonces for sensitive actions (e.g., saving settings, importing data, or executing admin functions), an attacker can craft a malicious request that, when executed by an authenticated admin, performs unintended operations.
Attack Flow:
- An attacker identifies a vulnerable endpoint in the plugin (e.g.,
/wp-admin/admin-ajax.php?action=stockie_extra_save_settings). - The attacker crafts a malicious HTML page or email containing a form or image tag that triggers a POST/GET request to that endpoint.
- The attacker lures an authenticated WordPress admin to visit the crafted page.
- The victim's browser automatically sends the request, including their session cookies.
- The plugin processes the request without verifying the CSRF token, executing the attacker's desired action (e.g., changing plugin settings, enabling backdoors, or modifying content).
Root Cause: Missing or improper nonce validation in the plugin's admin-facing functions.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable pattern. A typical vulnerable code snippet in WordPress plugins looks like:
// Vulnerable: No nonce check
add_action('wp_ajax_stockie_extra_save_settings', 'stockie_extra_save_settings');
function stockie_extra_save_settings() {
// Process and save settings without checking nonce
update_option('stockie_extra_options', $_POST['options']);
wp_die();
}
A patched version would include a nonce verification:
// Patched: Nonce check added
add_action('wp_ajax_stockie_extra_save_settings', 'stockie_extra_save_settings');
function stockie_extra_save_settings() {
// Verify nonce
if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'stockie_extra_save_nonce')) {
wp_die('CSRF validation failed.');
}
// Process and save settings
update_option('stockie_extra_options', $_POST['options']);
wp_die();
}
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress site with Stockie Extra plugin version <= 1.2.11.
- An authenticated admin user (victim).
- Attacker-controlled web server to host the malicious page.
Step 1: Identify Vulnerable Endpoint
Use browser developer tools or intercept proxy (e.g., Burp Suite) to capture a legitimate admin action (e.g., saving plugin settings). Look for AJAX requests without a _wpnonce parameter.
Step 2: Craft Malicious HTML Page
Create a file csrf_exploit.html:
<html>
<body>
<h1>Click me!</h1>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="stockie_extra_save_settings">
<input type="hidden" name="options[malicious_option]" value="evil_value">
<input type="submit" value="Submit">
</form>
<script>
// Auto-submit the form
document.forms[0].submit();
</script>
</body>
</html>
Step 3: Host and Deliver
Host the file on a server (e.g., python3 -m http.server 8080) and send the link to the victim (e.g., via email or social engineering).
Step 4: Execute When the victim (logged in as admin) visits the page, the form auto-submits, and the plugin processes the malicious request.
Blue Team (Defense & Detection)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith missing nonce parameters. - Look for spikes in requests from external IPs to admin endpoints.
- Use web application firewall (WAF) rules to block requests without valid nonces.
Prevention:
- Ensure all admin-facing actions in plugins use WordPress nonces.
- Implement Content Security Policy (CSP) to restrict form submissions.
- Educate users about phishing and CSRF attacks.
Indicators of Compromise (IOCs)
- Network:
- HTTP requests to
/wp-admin/admin-ajax.phpwithaction=stockie_extra_*parameters. - Referer headers from external domains (e.g., attacker-controlled sites).
- HTTP requests to
- File:
- Modified plugin options in the database (e.g.,
wp_optionstable withstockie_extra_options). - Unexpected files in
/wp-content/uploads/or plugin directories.
- Modified plugin options in the database (e.g.,
- Logs:
- WordPress debug logs showing nonce failures (if enabled).
- Web server access logs with unusual POST requests to admin-ajax.php.
Detection Engineering
YARA Rule
rule Detect_Stockie_Extra_CSRF_Exploit {
meta:
description = "Detects CSRF exploit attempts against Stockie Extra plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-64226"
strings:
$ajax_action = "stockie_extra_" nocase
$admin_ajax = "admin-ajax.php" nocase
$nonce_missing = "_wpnonce" nocase
condition:
$admin_ajax and $ajax_action and not $nonce_missing
}
Sigma Rule
title: CSRF Exploit Against Stockie Extra Plugin
id: 8a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests to admin-ajax.php with Stockie Extra actions missing nonce
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=stockie_extra_'
filter:
cs-uri-query|contains: '_wpnonce'
condition: selection and not filter
falsepositives:
- Legitimate plugin updates with nonce (unlikely)
level: medium
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-64226 - Stockie Extra CSRF Exploit Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=stockie_extra_"; http_uri;
pcre:"/^(?!.*_wpnonce).*$/Ui";
sid:10000001;
rev:1;
reference:cve,2025-64226;
priority:2;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released by the vendor.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpthat containaction=stockie_extra_without a valid nonce. - Educate administrators about CSRF risks and avoid clicking suspicious links while logged in.
Long-term Fix:
- The vendor must add nonce validation to all admin AJAX actions in the plugin.
- Users should monitor the WordPress plugin repository for updates and apply patches immediately.
Workaround:
- Use a security plugin (e.g., Wordfence) that adds CSRF protection to all admin actions.
- Restrict access to
/wp-admin/via IP whitelisting or VPN.
Report generated by Valters IT DevSecOps & CTI Division
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.