CVE-2025-62152
Executive Summary
CVE-2025-62152 is a Missing Authorization vulnerability in the ConveyThis WordPress plugin (versions up to and including 269.2). This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or privilege escalation. The vulnerability resides in the plugin's REST API or AJAX handlers, where critical functions lack proper capability checks. As a WordPress plugin vulnerability, it affects sites using the ConveyThis translation service. 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 is specific to the ConveyThis WordPress plugin, which is distributed via the official WordPress plugin repository. Users should verify the integrity of their plugin files and monitor for updates. Since no patch is available, consider disabling the plugin until a fix is released.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality (C): Low (L) – Limited information disclosure.
- Integrity (I): None (N) – No data modification.
- Availability (A): None (N) – No denial of service.
CVSS Score: 5.3 (Medium) – The vulnerability is remotely exploitable without authentication, but the impact is limited to low confidentiality loss.
Deep Dive & Mechanics
The vulnerability stems from missing authorization checks in the ConveyThis plugin's REST API endpoints or AJAX actions. In WordPress, plugins often register custom REST routes or AJAX hooks that should verify user capabilities (e.g., manage_options, edit_posts) before processing requests. In this case, the plugin fails to enforce such checks, allowing unauthenticated attackers to invoke sensitive functions.
Root Cause: The plugin's code likely uses register_rest_route() or add_action('wp_ajax_...') without a corresponding permission_callback or capability check. For example:
add_action('wp_ajax_nopriv_conveythis_export', 'conveythis_export_data');
This hook is accessible to unauthenticated users (nopriv), and if the function conveythis_export_data does not check user capabilities, it can be triggered by anyone.
Attack Vector: An attacker sends a crafted HTTP request to the vulnerable endpoint, e.g.:
POST /wp-admin/admin-ajax.php
action=conveythis_export
or
GET /wp-json/conveythis/v1/export
The server processes the request without verifying the user's role, potentially exposing translation data, API keys, or site configuration.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the vulnerable pattern and the fix.
Vulnerable Code (Hypothetical):
// Vulnerable: No permission_callback
register_rest_route('conveythis/v1', '/export', array(
'methods' => 'GET',
'callback' => 'conveythis_export_data',
));
Patched Code (Hypothetical):
// Patched: Added permission_callback
register_rest_route('conveythis/v1', '/export', array(
'methods' => 'GET',
'callback' => 'conveythis_export_data',
'permission_callback' => function() {
return current_user_can('manage_options');
}
));
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with ConveyThis plugin <= 269.2.
- No authentication required.
Exploitation Steps:
- Identify the vulnerable endpoint by analyzing the plugin's source code or using a wordlist.
- Send a crafted request to trigger the missing authorization.
Example using cURL:
curl -X POST "http://target.com/wp-admin/admin-ajax.php" \
-d "action=conveythis_export&nonce=123"
Example using Python:
import requests
url = "http://target.com/wp-admin/admin-ajax.php"
data = {"action": "conveythis_export"}
response = requests.post(url, data=data)
print(response.text)
Expected Outcome: The attacker receives sensitive data (e.g., API keys, translation data) without authentication.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith theactionparameter containingconveythis. - Look for requests to
/wp-json/conveythis/v1/endpoints from unauthenticated sources.
Defense:
- Disable the ConveyThis plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests to known vulnerable endpoints.
- Use a WordPress security plugin to enforce capability checks.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=conveythis_*parameters. - HTTP GET requests to
/wp-json/conveythis/v1/*endpoints.
- HTTP POST requests to
- File IOCs:
- Modified or suspicious files in
/wp-content/plugins/conveythis-translate/.
- Modified or suspicious files in
- Log IOCs:
- Unauthorized access attempts in WordPress debug logs or server access logs.
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"
reference = "CVE-2025-62152"
strings:
$vuln_func1 = "wp_ajax_nopriv_conveythis" ascii wide nocase
$vuln_func2 = "register_rest_route" ascii wide nocase
$vuln_func3 = "permission_callback" ascii wide nocase
condition:
($vuln_func1 or $vuln_func2) and not $vuln_func3
}
Sigma Rule
title: ConveyThis Missing Authorization Exploitation Attempt
id: cve-2025-62152
status: experimental
description: Detects attempts to exploit CVE-2025-62152 in ConveyThis plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=conveythis_'
condition: selection
falsepositives:
- Legitimate plugin usage by authorized users
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-62152 ConveyThis Missing Authorization Attempt"; flow:to_server; 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.
- Monitor logs for unauthorized access attempts.
- Apply virtual patching via WAF rules to block requests to vulnerable endpoints.
Long-term Fix:
- The vendor must release a patched version that adds proper
permission_callbackto all REST routes and capability checks to AJAX handlers. - Users should update to the latest version once available.
Workaround:
- If the plugin is critical, restrict access to
admin-ajax.phpvia.htaccessor server configuration:
<Files "admin-ajax.php">
Require all denied
</Files>
(Note: This may break legitimate AJAX functionality.)
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.