CVE-2025-66100
Executive Summary
CVE-2025-66100 is a Missing Authorization vulnerability in the RestroPress WordPress plugin by Magnigenie, affecting versions up to and including 3.2.3.5. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or modification. The vulnerability is classified as a WordPress ecosystem issue and does not involve Apache or Nginx. No public proof-of-concept (PoC) or patch is currently available, and the EPSS score is 0.0%, indicating low exploitation likelihood 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 affects a WordPress plugin distributed via the official WordPress plugin repository. Users should monitor for updates from the vendor and verify plugin integrity via checksums. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Score: 6.5 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
The threat level is Medium due to the lack of authentication required and the potential for unauthorized access to sensitive data or functionality.
Deep Dive & Mechanics
The vulnerability resides in the RestroPress plugin's access control mechanisms. The plugin fails to properly validate user permissions when processing certain REST API endpoints or administrative actions. This allows an unauthenticated attacker to bypass authorization checks and perform actions intended for authenticated users, such as viewing or modifying restaurant orders, menus, or customer data.
The root cause is a Missing Authorization check (CWE-862) in the plugin's code, where functions that should require a valid nonce or capability check are exposed without proper validation. This is typical of WordPress plugins that implement custom AJAX handlers or REST routes without verifying current_user_can() or wp_verify_nonce().
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common fixes:
Vulnerable Code (example):
add_action('wp_ajax_nopriv_restropress_update_order', 'restropress_update_order');
function restropress_update_order() {
// Process order update without capability check
$order_id = $_POST['order_id'];
update_post_meta($order_id, '_order_status', 'completed');
wp_die();
}
Patched Code (hypothetical):
add_action('wp_ajax_restropress_update_order', 'restropress_update_order');
function restropress_update_order() {
if (!current_user_can('edit_restropress_orders')) {
wp_die('Unauthorized', 403);
}
$order_id = intval($_POST['order_id']);
update_post_meta($order_id, '_order_status', 'completed');
wp_die();
}
The patch would add a capability check and ensure the action is only registered for authenticated users (wp_ajax_ instead of wp_ajax_nopriv_).
Exploitation & Lab Setup
Red Team
- Reconnaissance: Identify WordPress sites using RestroPress via Shodan dorks or WPScan.
- Exploitation: Send crafted HTTP requests to vulnerable endpoints (e.g.,
/wp-admin/admin-ajax.php?action=restropress_update_order&order_id=123). - Post-Exploitation: Extract order data, modify menu items, or escalate privileges if other vulnerabilities exist.
Example curl command:
curl -X POST 'http://target/wp-admin/admin-ajax.php' \
-d 'action=restropress_update_order&order_id=1&status=completed'
Blue Team
- Detection: Monitor for unusual AJAX requests to
admin-ajax.phpwithactionparameters starting withrestropress_from unauthenticated users. - Honeypot: Deploy a fake RestroPress endpoint to log attacker behavior.
- Mitigation: Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=restropress_*unless authenticated.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=restropress_*parameters. - Logs: WordPress debug logs showing
wp_ajax_nopriv_restropress_*actions triggered. - File: Modified plugin files in
/wp-content/plugins/restropress/with unauthorized changes. - Database: Suspicious entries in
wp_postmetafor orders or menu items.
Detection Engineering
YARA Rule
rule Detect_RestroPress_Missing_Auth {
meta:
description = "Detects exploitation attempts of CVE-2025-66100 in RestroPress"
author = "Valters IT"
date = "2025-04-10"
strings:
$ajax_action = "restropress_" nocase
$admin_ajax = "admin-ajax.php" nocase
condition:
$admin_ajax and $ajax_action
}
Sigma Rule
title: RestroPress Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests targeting RestroPress endpoints
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=restropress_'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> any any (
msg:"CVE-2025-66100 - RestroPress Missing Authorization Exploit";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=restropress_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate: Disable the RestroPress plugin until a patch is available.
- Workaround: Implement a WAF rule to block unauthenticated requests to
admin-ajax.phpwithaction=restropress_*. - Long-term: Apply vendor patch when released. Regularly update all WordPress plugins.
- Monitoring: Enable WordPress audit logging and review access logs for suspicious activity.
- Hardening: Restrict access to
wp-admindirectory via.htaccessor IP whitelisting.
Report generated by Valters IT DevSecOps Intelligence Unit
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.