CVE-2025-64639
Executive Summary
CVE-2025-64639 is a Missing Authorization vulnerability in the WP Compress for MainWP WordPress plugin, affecting versions up to and including 6.50.17. This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or actions within the WordPress ecosystem. The vulnerability has a CVSS score of 5.3 (Medium), with an EPSS score of 0.0%, indicating low exploitation likelihood currently. No public proof-of-concept (PoC) or patch is available at this time.
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 resides in a WordPress plugin distributed via the official WordPress plugin repository. Users are advised to monitor for updates from the vendor and apply patches immediately upon release. The lack of a patch increases supply chain risk for sites using this plugin.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability is exploitable remotely without authentication, but the impact is limited to low confidentiality loss. No integrity or availability impact.
Deep Dive & Mechanics
The vulnerability stems from a Missing Authorization check (CWE-862) in the WP Compress for MainWP plugin. The plugin fails to properly verify user permissions before allowing access to certain administrative functions or data endpoints. This allows an unauthenticated attacker to send crafted HTTP requests to the WordPress site and potentially access sensitive information or perform actions that should be restricted to authenticated users with specific roles.
The flaw is specifically in the wp-compress-mainwp component, which integrates with the MainWP dashboard. The missing authorization likely occurs in REST API endpoints or AJAX handlers that do not validate the current user's capabilities before processing requests.
Vulnerable vs. Patched Code
Since no patch is available, a hypothetical fix would involve adding capability checks to all sensitive endpoints. Below is an example of vulnerable vs. patched code.
Vulnerable Code (PHP):
add_action('wp_ajax_nopriv_wp_compress_get_data', 'wp_compress_get_data');
function wp_compress_get_data() {
// No authorization check
$data = get_option('wp_compress_sensitive_data');
wp_send_json_success($data);
}
Patched Code (PHP):
add_action('wp_ajax_wp_compress_get_data', 'wp_compress_get_data');
add_action('wp_ajax_nopriv_wp_compress_get_data', 'wp_compress_get_data_unauthorized');
function wp_compress_get_data() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$data = get_option('wp_compress_sensitive_data');
wp_send_json_success($data);
}
function wp_compress_get_data_unauthorized() {
wp_die('Unauthorized', 403);
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target WordPress site with WP Compress for MainWP <= 6.50.17 installed and activated.
- No authentication required.
Exploitation Steps:
- Identify vulnerable endpoints by analyzing the plugin's JavaScript or REST API routes.
- Send a crafted HTTP request to the vulnerable endpoint, e.g.:
curl -X POST "http://target.com/wp-admin/admin-ajax.php" \ -d "action=wp_compress_get_data" - If the endpoint returns sensitive data without authentication, the vulnerability is confirmed.
Note: No public exploit code is available. The above is a generic example based on common patterns.
Blue Team
Detection Steps:
- Monitor for unusual access to
admin-ajax.phpor REST API endpoints without authentication. - Check for requests to actions prefixed with
wp_compress_from unauthenticated users. - Review server logs for 403 errors followed by successful 200 responses on the same endpoint.
Hunting Query (Splunk):
index=web sourcetype=access_combined
| search uri="/wp-admin/admin-ajax.php" action=wp_compress_*
| eval authenticated=if(cookie="*wordpress_logged_in*", "yes", "no")
| where authenticated="no"
| stats count by src_ip, uri, status
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=wp_compress_*parameters from unauthenticated sources. - Unusual outbound data transfers from the WordPress server to external IPs.
- HTTP POST requests to
File IOCs:
- Modified plugin files in
/wp-content/plugins/wp-compress-mainwp/(check file integrity). - Suspicious log entries in
/var/log/apache2/access.logor/var/log/nginx/access.log.
- Modified plugin files in
Behavioral IOCs:
- Unauthorized access to WordPress options or user meta data.
- Unexpected changes to plugin settings.
Detection Engineering
YARA Rule
rule CVE_2025_64639_WP_Compress_Missing_Auth {
meta:
description = "Detects exploitation attempts for CVE-2025-64639 in WP Compress for MainWP"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-64639"
strings:
$ajax_action = "wp_compress_" nocase
$admin_ajax = "admin-ajax.php" nocase
condition:
$ajax_action and $admin_ajax
}
Sigma Rule
title: CVE-2025-64639 - WP Compress Missing Authorization
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated access to WP Compress for MainWP endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: "admin-ajax.php"
cs-uri-query|contains: "action=wp_compress_"
sc-status: 200
condition: selection
falsepositives:
- Legitimate plugin updates
level: medium
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-64639 - WP Compress Missing Authorization Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=wp_compress_"; http_client_body;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2025-64639;
)
Remediation & Mitigation
Immediate Actions:
- Disable the WP Compress for MainWP plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=wp_compress_*from unauthenticated users. - Monitor for any signs of exploitation using the provided detection rules.
Long-term Fix:
- Apply the official patch from the vendor once released.
- Update the plugin to the latest version.
- Conduct a security audit of all WordPress plugins for similar missing authorization issues.
Workaround:
- Add the following code to the theme's
functions.phpto block unauthenticated access to the vulnerable endpoints:add_action('init', function() { if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) { $action = $_REQUEST['action'] ?? ''; if (strpos($action, 'wp_compress_') === 0) { wp_die('Unauthorized', 403); } } });
Valters IT
Securing Digital Frontiers
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.