CVE-2025-24606 Overview
CVE-2025-24606 is a Missing Authorization vulnerability [CWE-862] in the BoldGrid Client Invoicing by Sprout Invoices plugin for WordPress. The flaw affects all versions of sprout-invoices up to and including 20.8.1. Authenticated attackers with low privileges can abuse incorrectly configured access control levels to reach functionality that should be restricted. The scope changes because actions performed through the vulnerable endpoint impact resources beyond the attacker's own account. Successful exploitation results in limited integrity and availability impact on invoicing data managed by the plugin.
Critical Impact
Low-privileged WordPress users can bypass access control checks in the Sprout Invoices plugin and interact with resources they should not have permission to modify.
Affected Products
- BoldGrid Client Invoicing by Sprout Invoices (sprout-invoices) WordPress plugin
- All versions from initial release through 20.8.1
- WordPress sites running the vulnerable plugin with authenticated user registration enabled
Discovery Timeline
- 2025-01-27 - CVE-2025-24606 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-24606
Vulnerability Analysis
The vulnerability stems from a Broken Access Control weakness in the Sprout Invoices plugin. The plugin exposes functionality that does not validate whether the authenticated caller holds the required capability or role. WordPress plugins typically enforce authorization through current_user_can() checks or capability-based verification inside AJAX handlers and REST endpoints. In this case, the plugin's access control logic is either missing or misconfigured on one or more endpoints reachable by any authenticated user.
The scope change indicated in the CVSS vector shows that a successful request affects resources managed outside the attacker's own security context. Impacted operations can alter invoicing objects and disrupt normal plugin behavior for other users of the site.
Root Cause
The root cause is a Missing Authorization condition mapped to [CWE-862]. The plugin registers callable endpoints without enforcing capability checks that match the sensitivity of the underlying action. Authentication alone is treated as sufficient, allowing any subscriber-level account to invoke privileged workflows.
Attack Vector
An attacker first obtains a low-privilege authenticated session on the target WordPress site. The attacker then issues crafted HTTP requests to the affected plugin endpoints over the network. Because the endpoints do not verify the caller's role, the plugin executes the requested operation and returns a valid response. No user interaction is required, and exploitation complexity is low.
Technical details for the specific vulnerable handler are documented in the Patchstack Vulnerability Report.
Detect Identity Attacks the Moment Authentication Fails
Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.
Stop Identity AttacksDetection Methods for CVE-2025-24606
Indicators of Compromise
- Unexpected modifications to invoice, estimate, or client records created by low-privilege user accounts
- HTTP POST requests to admin-ajax.php or plugin REST routes originating from subscriber-level sessions
- New or altered plugin data attributed to accounts that should have no invoicing permissions
Detection Strategies
- Review WordPress audit logs for privileged plugin actions correlated with non-administrative user IDs
- Inspect web server access logs for repeated requests targeting sprout-invoices AJAX actions from the same authenticated session
- Compare plugin data state against known-good baselines to identify unauthorized changes
Monitoring Recommendations
- Enable a WordPress activity logging plugin to record user role, action, and target object for every plugin event
- Forward web server and application logs to a centralized SIEM or data lake for correlation and retention
- Alert on anomalous request rates to /wp-admin/admin-ajax.php with action= parameters tied to Sprout Invoices
How to Mitigate CVE-2025-24606
Immediate Actions Required
- Update the Client Invoicing by Sprout Invoices plugin to a version later than 20.8.1 as soon as the vendor publishes a fix
- Audit existing WordPress accounts and remove or downgrade any unnecessary low-privilege users
- Review recent invoice and estimate records for unauthorized modifications during the exposure window
Patch Information
At the time of publication, the vulnerability affects all versions through 20.8.1. Site operators should monitor the Patchstack Vulnerability Report for updated fixed-version guidance and apply the vendor patch as soon as it becomes available through the WordPress plugin repository.
Workarounds
- Restrict access to /wp-admin/admin-ajax.php and Sprout Invoices REST routes at the web application firewall for non-administrative users
- Disable user self-registration on the WordPress site until a patched plugin version is deployed
- Temporarily deactivate the Sprout Invoices plugin if invoicing functionality is not business-critical
# Example: block subscriber-level access to Sprout Invoices AJAX actions at the WAF
# ModSecurity rule (illustrative)
SecRule REQUEST_URI "@contains /wp-admin/admin-ajax.php" \
"chain,deny,status:403,id:1002460601,msg:'Block Sprout Invoices AJAX for low-priv users'"
SecRule ARGS:action "@rx ^sa_.*|^si_.*" \
"chain"
SecRule REQUEST_COOKIES:/wordpress_logged_in_/ ".*"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

