CVE-2025-68021
Executive Summary
CVE-2025-68021 is a Missing Authorization vulnerability in the ConveyThis WordPress plugin (versions <= 269.9). This flaw allows an unauthenticated attacker 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, not related to Apache or Nginx. The CVSS score is 6.5 (Medium), and no public proof-of-concept (PoC) or patch is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains due to the lack of a patch.
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 ConveyThis WordPress plugin, which is distributed via the WordPress plugin repository and third-party marketplaces. Since no patch is available, users must rely on manual mitigation or disabling the plugin. The supply chain risk is elevated because the plugin may be bundled in WordPress themes or used as a dependency in other plugins.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- 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: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability is easy to exploit remotely without authentication, but the impact is limited to low confidentiality and integrity loss. No public exploit exists, but the lack of a patch increases long-term risk.
Deep Dive & Mechanics
The vulnerability resides in the ConveyThis WordPress plugin, specifically in its access control mechanisms. The plugin fails to properly validate user permissions when processing certain AJAX requests or REST API endpoints. This allows an unauthenticated attacker to:
- Access sensitive translation data or configuration settings.
- Modify plugin settings (e.g., API keys, language mappings).
- Potentially escalate privileges if combined with other vulnerabilities.
The root cause is a Missing Authorization check (CWE-862) in the plugin's core functions. The plugin likely uses wp_ajax_* hooks without verifying current_user_can() or nonce checks, or it exposes REST API endpoints without proper permission callbacks.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the plugin's main PHP files (e.g., conveythis-translate.php). A typical vulnerable pattern might look like:
// Vulnerable: No permission check
add_action('wp_ajax_nopriv_conveythis_update_settings', 'conveythis_update_settings');
function conveythis_update_settings() {
// Process settings update without checking user capabilities
update_option('conveythis_api_key', $_POST['api_key']);
}
A patched version would include:
// Patched: Permission check added
add_action('wp_ajax_conveythis_update_settings', 'conveythis_update_settings');
function conveythis_update_settings() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized');
}
check_admin_referer('conveythis_settings_nonce');
update_option('conveythis_api_key', sanitize_text_field($_POST['api_key']));
}
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Target WordPress site with ConveyThis plugin <= 269.9.
- No authentication required.
Exploitation Steps:
- Identify vulnerable endpoints (e.g.,
/wp-admin/admin-ajax.php?action=conveythis_*). - Craft a request to modify plugin settings or extract data.
Example curl command to exploit a hypothetical endpoint:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=conveythis_get_translations&lang=fr" \
-H "Content-Type: application/x-www-form-urlencoded"
If the endpoint returns translation data without authentication, the exploit is successful.
No public exploit code is available. The above is a generic example.
Blue Team (Defensive)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithactionparameters containingconveythis. - Look for requests from unauthenticated users to plugin-specific endpoints.
Hunting:
- Search logs for
conveythisin theactionparameter. - Check for unauthorized changes to
wp_optionstable entries related toconveythis.
Honeypot:
- Deploy a fake endpoint
conveythis_honeypotthat logs and alerts on access.
Indicators of Compromise (IOCs)
Network:
- HTTP requests to
/wp-admin/admin-ajax.phpwithaction=conveythis_*from unauthenticated IPs. - Unusual POST data containing
conveythis_api_keyorconveythis_settings.
- HTTP requests to
File System:
- Modified
wp_optionstable entries:conveythis_api_key,conveythis_language_mapping. - Unexpected files in
/wp-content/plugins/conveythis-translate/.
- Modified
Logs:
- WordPress debug log entries:
[conveythis] Unauthorized access attempt. - Web server logs:
POST /wp-admin/admin-ajax.phpwith 200 status from unknown IPs.
- WordPress debug log entries:
Detection Engineering
YARA Rule
rule detect_conveythis_missing_auth {
meta:
description = "Detects ConveyThis plugin files with missing authorization"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-68021"
strings:
$vuln_func = "wp_ajax_nopriv_conveythis" nocase
$vuln_hook = "add_action('wp_ajax_nopriv_conveythis" nocase
$no_check = "current_user_can" nocase
condition:
($vuln_func or $vuln_hook) and not $no_check
}
Sigma Rule
title: ConveyThis Plugin Missing Authorization Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to exploit CVE-2025-68021 in ConveyThis WordPress plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=conveythis'
sc-status: 200
condition: selection
falsepositives:
- Legitimate admin actions (if authenticated)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-68021 ConveyThis Missing Authorization Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=conveythis"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the ConveyThis plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block requests containing
action=conveythisfrom unauthenticated users. - Monitor logs for exploitation attempts.
Long-term:
- Apply the patch once released by the vendor.
- Consider replacing the plugin with an alternative that has active security support.
- 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 ConveyThis endpoints:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX) {
if (isset($_POST['action']) && strpos($_POST['action'], 'conveythis') !== false) {
if (!is_user_logged_in()) {
wp_die('Unauthorized');
}
}
}
});
Valters IT
Cyber Threat Intelligence & DevSecOps
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.