Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
Lifecycle Timeline
2DescriptionCVE.org
The Charitable - Donation Plugin for WordPress - Fundraising with Recurring Donations & More plugin for WordPress is vulnerable to Insecure Direct Object Reference / Authorization Bypass leading to Arbitrary Attachment Deletion in versions up to, and including, 1.8.11.1 via the profile avatar update flow. This is due to the save_avatar() function in Charitable_Profile_Form calling wp_delete_attachment() on an attachment ID read from the user's 'avatar' meta without validating that the attachment is owned by the user, combined with Charitable_Data_Processor::process_picture() returning the raw posted value when no file is uploaded, allowing the 'avatar' user meta to be poisoned with any attacker-chosen attachment ID. This makes it possible for authenticated attackers, with Subscriber-level access and above, to delete arbitrary attachments from the Media Library by performing a two-request chain (first poisoning the stored avatar meta value with a target attachment ID, then triggering deletion via a normal avatar upload).
AnalysisAI
Arbitrary Media Library attachment deletion in the Charitable donation plugin for WordPress (versions through 1.8.11.1) is achievable by any authenticated user with Subscriber-level access or above via a two-stage IDOR exploit chain in the profile avatar update flow. The attack chains two weak points: Charitable_Data_Processor::process_picture() returns a raw user-supplied attachment ID verbatim when no file is uploaded, allowing an attacker to poison their own avatar user meta with any arbitrary attachment ID, which save_avatar() then blindly passes to wp_delete_attachment() without verifying that the target attachment belongs to the requesting user. No public exploit has been identified at time of analysis, and exploitation is constrained to authenticated users on sites with active user registration.
Technical ContextAI
CWE-639 (Authorization Through User-Controlled Key) precisely describes the root cause: the plugin uses an attachment ID as an authorization key, but the ID is supplied by the user and never validated against ownership. The vulnerable code path spans two PHP classes within the Charitable plugin: Charitable_Data_Processor::process_picture() (class-charitable-data-processor.php, line 270) performs no ownership check when no file is uploaded and simply returns the posted value, and Charitable_Profile_Form::save_avatar() (class-charitable-profile-form.php, lines 724/728) reads the 'avatar' user meta and passes the stored ID directly to WordPress core's wp_delete_attachment() (class-charitable-user.php, line 986). The WordPress wp_delete_attachment() function itself is a privileged operation not gated by the plugin's authorization layer. Because WordPress grants Subscriber-level users access to the profile form, any registered user can initiate this chain. The attack is two-request: the first request poisons the avatar meta; the second request (a normal avatar upload trigger) activates deletion.
RemediationAI
An upstream fix has been committed to the Charitable plugin trunk on WordPress Trac via changeset 3557047, modifying class-charitable-profile-form.php to enforce attachment ownership validation before calling wp_delete_attachment(). The exact released patched version number is not independently confirmed from the available input data - site administrators should update to the latest available version of the Charitable plugin through the WordPress plugin repository and verify the version exceeds 1.8.11.1. If an immediate update is not possible, the most targeted compensating control is to disable frontend user registration entirely (WordPress Settings > General > uncheck 'Anyone can register'), which removes the Subscriber account prerequisite and makes the attack chain non-executable. A secondary workaround is to restrict avatar upload functionality within the plugin's profile form settings if the feature is not required, preventing the trigger mechanism from firing. Note that disabling registration may impact fundraiser campaign participant flows if Charitable is used for donor account creation.
The isMail transport in PHPMailer before 5.2.20 might allow remote attackers to pass extra parameters to the mail comman
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
The GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Country State City Dropdown CF7 plugin for WordPress is vulnerable to SQL Injection via the ‘cnt’ and 'sid' paramete
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34927
GHSA-9jf2-67mg-r5ph