CVE-2026-78570
Executive Summary
CVE-2026-78570 is a privilege escalation vulnerability in the Total Donations plugin for WordPress, affecting all versions up to and including 2.0.5. The vulnerability allows unauthenticated attackers to elevate their privileges to that of an administrator, which in a WordPress context grants full control over the affected site including the ability to upload malicious plugins, modify content, and access the underlying server. With a CVSS score of 9.8 and no patch currently available, this vulnerability represents a critical, actively exploitable risk to any WordPress installation running the affected plugin version.
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
Technical Analysis
The NVD description indicates that the Total Donations plugin for WordPress is vulnerable to privilege escalation in all versions up to, and including, 2.0.5. The core flaw is classified under CWE-269 (Improper Privilege Management), which means the application fails to properly restrict privileges or enforce access control checks when performing certain actions.
The vulnerability is exploitable by unauthenticated attackers, meaning no valid credentials or prior access level is required to trigger the flaw. The attack vector is network-based (AV:N) with low attack complexity (AC:L), indicating that no special conditions are required for successful exploitation — the attacker does not need any user interaction (UI:N) and no privileges are required (PR:N).
Regarding the specific vulnerable mechanism, insufficient technical detail is available from the NVD description. The vulnerability class suggests that the plugin likely exposes an administrative function or role-assignment endpoint that either:
- Fails to verify whether the requesting user is authenticated, or
- Fails to verify whether an authenticated (or unauthenticated) request is authorized to perform a privilege-escalating action, or
- Processes user-supplied parameters (such as user ID or role fields) without proper sanitization or authorization checks when registering/modifying user accounts.
In the WordPress ecosystem, privilege escalation vulnerabilities of this nature commonly arise from:
- Missing
current_user_can()or capability checks in AJAX handlers or registration processing code - Direct calls to
wp_insert_user()orwp_update_user()with attacker-controlled role parameters - Insecure use of
wp_ajax_nopriv_*hooks that expose administrative actions to unauthenticated users
However, since the specific functions, endpoints, and parameters are not disclosed in the NVD description, the analysis must remain at the vulnerability-class level. The plugin handles donation processing, which typically involves shortcode rendering, payment gateway callbacks, and user-facing forms — any of these attack surfaces could expose the vulnerable code path.
The CVSS vector confirms the severity: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network-accessible, low complexity, no privileges or user interaction required, with full confidentiality, integrity, and availability impact.
Exploitation Scenarios
No public PoC or exploit code is currently available for this vulnerability; the attack chain below is inferred from the vulnerability class.
Step 1: Reconnaissance and Target Identification
An attacker would first identify WordPress sites running the Total Donations plugin version ≤ 2.0.5. This can be achieved through:
- Scanning for WordPress sites using Shodan or Censys with dorks targeting the plugin name or its typical asset paths
- Using WordPress-specific scanners (e.g., WPScan) that enumerate installed plugins and versions
- Reviewing publicly available site source code for plugin references or version strings
Step 2: Triggering the Privilege Escalation Flaw
The attacker sends a crafted HTTP request to a vulnerable endpoint exposed by the plugin. Since the attack requires no authentication, the request targets a plugin endpoint that performs privilege-escalating actions (e.g., user role assignment or account creation). Based on the CWE-269 classification, the likely trigger mechanism is:
- An unauthenticated HTTP request that invokes a plugin function responsible for creating or modifying user accounts
- The request includes parameters that specify a target user ID (or create a new user) and assign the "administrator" role
- The plugin fails to verify that the requester is authenticated or authorized to perform such an action
Step 3: Payload and Execution Method
At the vulnerability-class level, the payload is a set of HTTP parameters — typically:
- A user identifier (existing user ID or a new username/password/email combination)
- A role parameter set to "administrator"
- A nonce or security token valid for the plugin's AJAX/registration handler (may or may not be required depending on implementation)
The attacker submits this request via standard HTTP (GET or POST) to the vulnerable plugin endpoint. Since the plugin fails to enforce privilege checks, the server processes the request and elevates the attacker-controlled account to administrator privileges.
Step 4: Post-Exploitation Impact
Once administrator access is obtained, the attacker has complete control over the WordPress installation:
- Upload and activate malicious plugins or themes containing backdoors or web shells
- Modify site content, inject malicious JavaScript (for credential harvesting or drive-by downloads)
- Access the WordPress dashboard and potentially the underlying server file system through plugin/theme editors
- Create additional administrator accounts for persistent access
- Use the compromised site as a launching point for further attacks (e.g., phishing, malware distribution, DDoS participation)
- Extract sensitive data: user databases, donation records, payment information (if stored by the plugin)
Note: Specific technical details about the vulnerable code path, endpoint URLs, or parameter names are not available. The attack chain is described at the vulnerability-class level.
Impact Assessment
| Metric | Value |
|---|---|
| CVSS Score | 9.8 (Critical) |
| Attack Vector | Network (AV:N) — remotely exploitable |
| Attack Complexity | Low (AC:L) — no special conditions |
| Privileges Required | None (PR:N) — unauthenticated |
| User Interaction | None (UI:N) |
| Confidentiality Impact | High (C:H) — full data exposure |
| Integrity Impact | High (I:H) — full control over site data |
| Availability Impact | High (A:H) — can disrupt or destroy site |
Business Impact:
- Complete site compromise: Administrator-level access grants full control over the WordPress environment, including all content, user data, and configuration.
- Data breach severity: Donation plugins typically store donor information (names, email addresses, donation amounts) and may integrate with payment processors. While full payment card data is unlikely to be stored locally (PCI DSS requires offsite storage), donor PII is at risk.
- Reputational damage: Compromised donation pages undermine donor trust, impacting current and future fundraising efforts.
- Supply chain risk: The compromised site could be used to serve malicious content to visitors or distribute malware, extending the blast radius beyond the immediate site.
- Lateral movement potential: If the WordPress installation shares infrastructure (shared hosting, database servers) with other applications, the attacker may pivot to adjacent systems.
Affected Systems: All WordPress installations running the Total Donations plugin version 2.0.5 or earlier are vulnerable. The plugin's exact market penetration is unknown, but donation plugins are widely used by non-profits, churches, and small organizations — entities often with limited security resources.
Scope: The vulnerability has a scope of "Unchanged" (S:U), meaning the compromise is confined to the vulnerable application's security boundary. However, post-exploitation (administrator access) typically grants broader access within the hosting environment.
Detection Guidance
Sigma Rule
title: Total Donations WordPress Plugin - Privilege Escalation Attempt
id: 4f8a2c9e-6b3d-4e7a-9f1c-8a2b5d4e6f70
status: experimental
description: Detects HTTP requests targeting Total Donations plugin endpoints with privilege escalation characteristics (admin role assignment by unauthenticated users)
author: Valtersit Threat Intelligence
date: 2026/09/17
logsource:
category: webserver
product: apache
definition: 'Web server access logs or WAF logs for WordPress sites'
detection:
selection_plugin_path:
cs-uri-extension:
- '.php'
cs-uri-query|contains:
- 'total-donations'
- 'total_donations'
selection_admin_role:
cs-uri-query|contains:
- 'role=administrator'
- 'role=admin'
- 'user_role=administrator'
- 'capabilities=administrator'
selection_registration:
cs-uri-query|contains:
- 'action=register'
- 'action=createuser'
- 'action=updateuser'
- 'process_donation'
- 'process_registration'
condition: selection_plugin_path and (selection_admin_role or selection_registration)
timeframe: 5m
fields:
- c-ip
- cs-uri-stem
- cs-uri-query
- cs-user-agent
- sc-status
falsepositives:
- Legitimate administrator actions on the plugin (if the plugin adds administrator role parameters during normal donation processing)
level: critical
tags:
- attack.t1190
- attack.privilege_escalation
- cwe.269
- cve.2026-78570
YARA Rule
rule CVE_2026_78570_Total_Donations_Privilege_Escalation
{
meta:
author = "Valtersit Threat Intelligence"
description = "Detects exploit payloads targeting Total Donations privilege escalation in WordPress"
cve = "CVE-2026-78570"
cwe = "CWE-269"
date = "2026-09-17"
severity = "critical"
strings:
$a1 = "total-donations" ascii wide nocase
$a2 = "total_donations" ascii wide nocase
$b1 = "role=administrator" ascii wide nocase
$b2 = "role=admin" ascii wide nocase
$b3 = "user_role" ascii wide nocase
$b4 = "wp_capabilities" ascii wide nocase
$b5 = "capabilities[administrator]" ascii wide nocase
$c1 = "action=register" ascii wide nocase
$c2 = "action=createuser" ascii wide nocase
$c3 = "action=updateuser" ascii wide nocase
$c4 = "newuser" ascii wide nocase
$c5 = "user_login" ascii wide nocase
$c6 = "user_pass" ascii wide nocase
condition:
uint16(0) == 0x0D0A or uint32(0) == 0x0D0A0D0A or filesize < 100KB and
(1 of ($a*)) and
(1 of ($b*) or 1 of ($c*))
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2026-78570 - Total Donations WordPress Plugin Privilege Escalation Attempt";
flow:to_server,established;
content:"total-donations"; http_uri; nocase;
pcre:"/role\s*=\s*(administrator|admin)/i";
sid:7857001;
rev:1;
metadata:attack_target Web_Server, cve 2026-78570, cwe CWE-269, deployment Perimeter, signature_severity Critical, tag WordPress, tag privilege_escalation;
reference:url,nvd.nist.gov/vuln/detail/CVE-2026-78570;
classtype:attempted-admin;
)
Elastic Detection
sequence by source.ip with maxspan=5m
[ network where event.type == "connection" and destination.port == 80 or destination.port == 443 ]
[ http where process.name == "httpd" or process.name == "nginx" and
http.request.method == "POST" or http.request.method == "GET" and
http.request.uri contains "total-donations" and
(
http.request.uri contains "role=administrator" or
http.request.uri contains "role=admin" or
http.request.body.content contains "role=administrator" or
http.request.body.content contains "user_role" and
http.request.body.content contains "administrator" or
http.request.uri contains "action=register" or
http.request.uri contains "action=createuser" or
http.request.uri contains "action=updateuser"
) and
http.response.status_code == 200 ]
Splunk SPL Query
index=web sourcetype=access_combined earliest=-24h
| where like(uri_path, "%total-donations%") OR like(uri, "%total_donations%")
| search (
(uri_query="*role=administrator*" OR uri_query="*role=admin*" OR
uri_query="*user_role*administrator*") OR
(uri_query="*action=register*" OR uri_query="*action=createuser*" OR
uri_query="*action=updateuser*" OR uri_query="*process_registration*")
)
| eval is_suspicious = if((like(uri, "%total-donations%") OR like(uri, "%total_donations%"))
AND
(
(like(uri_query, "%role=administrator%") OR like(uri_query, "%role=admin%")) OR
(like(uri_query, "%action=register%") AND (like(uri_query, "%user_login%") AND like(uri_query, "%user_pass%")))
), 1, 0)
| where is_suspicious=1
| stats count by src_ip, uri, uri_query, user_agent, sc_status
| sort - count
| table _time, src_ip, uri, uri_query, user_agent, sc_status, count
Wazuh OSSEC Rule
<group name="wordpress,">
<rule id="803322" level="15">
<decoded_as>json</decoded_as>
<field name="url">\.php</field>
<regex>url.*total-donations|total_donations</regex>
<regex>url.*role=(administrator|admin)</regex>
<description>CVE-2026-78570: Total Donations plugin privilege escalation attempt detected (unauthenticated admin role assignment)</description>
<group>attack.privilege_escalation,</group>
<mitre>
<id>T1190</id>
</mitre>
<info type="cve">CVE-2026-78570</info>
<info type="cwe">CWE-269</info>
</rule>
<rule id="803323" level="15">
<decoded_as>json</decoded_as>
<field name="url">\.php</field>
<regex>url.*total-donations|total_donations</regex>
<regex>url.*action=(register|createuser|updateuser)</regex>
<regex>url.*user_(login|pass|email)</regex>
<description>CVE-2026-78570: Possible unauthenticated user creation via Total Donations plugin</description>
<group>attack.privilege_escalation,</group>
<mitre>
<id>T1190</id>
</mitre>
<info type="cve">CVE-2026-78570</info>
<info type="cwe">CWE-269</info>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED
No patch is currently available from any tracked source. The vendor has not released a fixed version, and no vendor advisory has been published.
1. Immediate Mitigations (apply today)
| Priority | Action | Rationale |
|---|---|---|
| CRITICAL | Disable or uninstall the Total Donations plugin | Only guaranteed way to eliminate the exposure while unpatched |
| HIGH | If deactivation is not possible (e.g., plugin is critical to donation flows), place the plugin's endpoints behind a Web Application Firewall (WAF) rule that blocks unauthenticated requests containing administrator role parameters or user registration parameters | Reduces exploitable surface |
| HIGH | Implement a WAF custom rule to block requests to any Total Donations endpoint where role, capabilities, user_login, or user_pass parameters are present and no authenticated session cookie is detected |
Blocks privilege escalation attempts |
| MEDIUM | Restrict access to WordPress admin and registration endpoints via IP allowlisting (VPN or office IPs) where operationally feasible | Limits attack surface |
| MEDIUM | Monitor web server access logs for the patterns described in Detection Guidance; alert on any match | Enables early detection and response |
| LOW | If the site is critical and cannot be taken offline, consider migrating to an alternative donation plugin that provides equivalent functionality | Reduces dependency on vulnerable software |
2. Patch / Upgrade Steps
- Check for plugin updates daily: The vendor may release a patched version at any time. Subscribe to WordPress plugin update notifications.
- When a patched version is released: Upgrade to the latest version immediately. Validate that the patched version resolves CVE-2026-78570 by reviewing the vendor changelog.
- If no patch is released within a reasonable timeframe (e.g., 30 days): Re-evaluate the business need for this plugin. Consider permanently replacing it with an actively maintained alternative.
3. Long-Term Hardening
- WordPress security baseline: Enforce least-privilege principles — do not grant administrator role to any user unless explicitly required.
- Run WordPress hardening tools: Use the WPScan CLI or commercial equivalents as part of CI/CD to automatically detect vulnerable plugins before deployment.
- Implement routine vulnerability scanning: Schedule weekly scans of all WordPress assets to detect known-vulnerable plugin versions (CVE-2026-78570 should be added to your scanning tool's vulnerability database).
- Enable WordPress automatic updates for plugins/themes where feasible, with a staging environment to validate updates before production rollout.
- Restrict
wp-adminaccess by IP address or use two-factor authentication for all administrative users. - Maintain a plugin allowlist: Only install plugins that are actively maintained (commits within 12 months) and have a track record of timely security fixes.
- Monitor CISA KEV and NVD for updates regarding this CVE, as exploitation in the wild may prompt expedited patch development or CISA directives.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-78570 — Official U.S. National Vulnerability Database entry; contains the CVSS vector and NVD description used in this report.
- CWE-269: https://cwe.mitre.org/data/definitions/269.html — MITRE CWE reference for Improper Privilege Management, the weakness class for this vulnerability.
- WordPress Plugin Repository: https://wordpress.org/plugins/ — Official WordPress plugin repository; monitor for Total Donations plugin updates and changelog.
- WordPress Security Announcements: https://wordpress.org/news/category/security/ — Official WordPress security advisories; may publish guidance if the vulnerability impacts the broader WordPress ecosystem.
- CISA Known Exploited Vulnerabilities (KEV) Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — Monitor this catalog; CVE-2026-78570 is currently not listed (NO known exploitation in the wild at time of writing).
Report generated by Valtersit Threat Intelligence — 2026-09-17. Version 1.0 — CVE-2026-78570. All technical claims derived from the provided NVD data; no explicit PoC or exploit code exists to validate the specific attack mechanism.
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.