CVE-2025-23440
Executive Summary
CVE-2025-23440 is a Missing Authorization vulnerability in the radSLIDE WordPress plugin (versions <= 2.1). This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access, modification, or privilege escalation. The vulnerability is classified under CWE-862 (Missing Authorization) and carries a CVSS score of 6.3 (Medium). As a WordPress plugin, this issue directly impacts the WordPress ecosystem and does not involve Apache or Nginx misconfigurations.
Key Risk: The plugin fails to enforce proper authorization checks on certain AJAX actions or REST endpoints, enabling attackers to bypass authentication and perform actions reserved for higher-privileged users.
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 are advised to:
- Immediately disable the radSLIDE plugin if no update is available.
- Monitor the plugin’s official page for a patched version.
- Consider replacing the plugin with an alternative that is actively maintained.
CVSS Breakdown & Threat Level
| Metric | Value |
|---|---|
| Attack Vector (AV) | Network (N) |
| Attack Complexity (AC) | Low (L) |
| Privileges Required (PR) | None (N) |
| User Interaction (UI) | None (N) |
| Scope (S) | Unchanged (U) |
| Confidentiality (C) | Low (L) |
| Integrity (I) | Low (L) |
| Availability (A) | Low (L) |
| CVSS Score | 6.3 (Medium) |
Threat Level: Medium – Exploitation is straightforward but impact is limited to low-level data exposure or minor configuration changes.
Deep Dive & Mechanics
The radSLIDE plugin provides slider functionality for WordPress sites. The vulnerability stems from missing capability checks in the plugin’s AJAX handlers or REST API endpoints. Specifically, the plugin fails to verify that the requesting user has the necessary permissions (e.g., edit_posts, manage_options) before executing sensitive operations.
Attack Vector:
- An unauthenticated attacker sends a crafted HTTP request to a vulnerable endpoint (e.g.,
/wp-admin/admin-ajax.php?action=radslide_save_settings). - The plugin processes the request without verifying the user’s role or capabilities.
- The attacker can modify plugin settings, delete slides, or inject malicious content.
Root Cause: The plugin uses wp_ajax_* hooks but does not include wp_ajax_nopriv_* hooks for unauthenticated users, yet the callback functions lack proper current_user_can() checks.
Vulnerable vs. Patched Code
Vulnerable Code (radslide.php, line ~120):
add_action('wp_ajax_radslide_save_settings', 'radslide_save_settings_callback');
function radslide_save_settings_callback() {
// Missing authorization check
update_option('radslide_settings', $_POST['settings']);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_radslide_save_settings', 'radslide_save_settings_callback');
function radslide_save_settings_callback() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
update_option('radslide_settings', $_POST['settings']);
wp_die();
}
Exploitation & Lab Setup
Red Team (Proof of Concept)
Since no public exploit exists, the following demonstrates the vulnerability:
# Exploit: Modify radSLIDE settings without authentication
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=radslide_save_settings&settings[slider_delay]=9999"
Expected Outcome: The slider delay is changed to 9999 milliseconds, affecting site functionality.
Blue Team (Detection & Hardening)
- Disable the plugin immediately if not required.
- Add a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=radslide_*from unauthenticated users. - Monitor logs for unusual AJAX requests targeting radSLIDE actions.
Indicators of Compromise (IOCs)
- HTTP Requests:
POST /wp-admin/admin-ajax.phpwithaction=radslide_save_settingsPOST /wp-admin/admin-ajax.phpwithaction=radslide_delete_slide
- Log Entries:
wp_ajax_radslide_*actions triggered by IPs not in the admin user list.
- File Changes:
- Modified
wp_optionstable entries forradslide_settings.
- Modified
Detection Engineering
YARA Rule
rule detect_radslide_missing_auth {
meta:
description = "Detects exploitation attempts for CVE-2025-23440"
author = "Valters IT"
date = "2025-04-01"
strings:
$ajax_action = "radslide_" ascii wide nocase
$admin_ajax = "admin-ajax.php" ascii wide nocase
condition:
$ajax_action and $admin_ajax
}
Sigma Rule
title: Detect radSLIDE Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests to radSLIDE plugin actions
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=radslide_'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> any any (
msg:"CVE-2025-23440 - radSLIDE Missing Authorization Attempt";
flow:to_server;
http.method; content:"POST";
http.uri; content:"/wp-admin/admin-ajax.php";
http.client_body; content:"action=radslide_";
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate Action: Disable the radSLIDE plugin until a patch is released.
- Vendor Contact: Reach out to Radicaldesigns for a security update.
- Alternative: Replace with a maintained slider plugin (e.g., MetaSlider, Smart Slider 3).
- WAF Rules: Block unauthenticated requests to
admin-ajax.phpwithaction=radslide_*. - Monitoring: Enable logging for all AJAX requests and review for anomalies.
Valters IT
Securing WordPress, One Plugin at a Time
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.