CVE-2025-0912
📋 TL;DR
The Donations Widget WordPress plugin contains a PHP object injection vulnerability that allows unauthenticated attackers to execute arbitrary code on affected websites. This affects all versions up to 3.19.4. Attackers can exploit this through the donation form's 'card_address' parameter to achieve remote code execution.
💻 Affected Systems
- WordPress Donations Widget plugin (GiveWP)
📦 What is this software?
Givewp by Givewp
⚠️ Risk & Real-World Impact
Worst Case
Complete server compromise allowing attackers to install backdoors, steal sensitive data, deface websites, or use the server for further attacks.
Likely Case
Website defacement, data theft, cryptocurrency mining, or ransomware deployment.
If Mitigated
Attack attempts logged but blocked if proper input validation and security controls are in place.
🎯 Exploit Status
The vulnerability is straightforward to exploit with available POP chains for RCE.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Versions after 3.19.4
Vendor Advisory: https://wordpress.org/plugins/give/
Restart Required: No
Instructions:
1. Log into WordPress admin panel
2. Navigate to Plugins → Installed Plugins
3. Find 'Give - Donation Plugin' and check version
4. If version is 3.19.4 or lower, click 'Update Now'
5. Verify update to version 3.19.5 or higher
🔧 Temporary Workarounds
Disable Donations Widget Plugin
allTemporarily disable the vulnerable plugin until patched
wp plugin deactivate give
Block Suspicious Requests
allAdd WAF rule to block requests containing serialized PHP objects in card_address parameter
🧯 If You Can't Patch
- Disable the Donations Widget plugin immediately
- Implement web application firewall rules to block requests with serialized PHP objects in form parameters
🔍 How to Verify
Check if Vulnerable:
Check WordPress admin panel → Plugins → Installed Plugins → Give - Donation Plugin version
Check Version:
wp plugin list --name=give --field=version
Verify Fix Applied:
Verify plugin version is 3.19.5 or higher in WordPress admin
📡 Detection & Monitoring
Log Indicators:
- POST requests to donation forms with unusual data in card_address parameter
- PHP unserialize() errors in logs
- Unexpected file creation or process execution
Network Indicators:
- HTTP POST requests to /wp-admin/admin-ajax.php or donation endpoints with serialized data
- Unusual outbound connections from web server
SIEM Query:
source="web_logs" AND (uri_path="*donation*" OR uri_path="*give*" OR uri_path="*wp-admin/admin-ajax.php*") AND http_method="POST" AND (request_body="*O:*" OR request_body="*C:*" OR request_body="*s:*")
🔗 References
- https://github.com/impress-org/givewp/pull/7679/files
- https://plugins.trac.wordpress.org/changeset/3234114/give/trunk/src/Donations/Properties/BillingAddress.php
- https://plugins.trac.wordpress.org/changeset/3234114/give/trunk/src/Donations/Repositories/DonationRepository.php
- https://plugins.trac.wordpress.org/changeset/3234114/give/trunk/src/Donors/Repositories/DonorRepository.php
- https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3234114%40give&new=3234114%40give&sfp_email=&sfph_mail=
- https://www.wordfence.com/threat-intel/vulnerabilities/id/8a8ae1b0-e9a0-4179-970b-dbcb0642547c?source=cve