CVE-2024-54273

9.8 CRITICAL

📋 TL;DR

CVE-2024-54273 is a PHP object injection vulnerability in the WordPress Mail Picker plugin caused by unsafe deserialization of untrusted data. Attackers can exploit this to execute arbitrary code on affected WordPress sites. All WordPress installations using Mail Picker plugin versions up to 1.0.14 are vulnerable.

💻 Affected Systems

Products:
  • WordPress Mail Picker Plugin
Versions: n/a through 1.0.14
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: All WordPress installations with the vulnerable plugin version are affected regardless of configuration.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data theft, website defacement, and installation of backdoors or malware.

🟠

Likely Case

Unauthenticated attackers gaining shell access to the web server, installing web shells, and pivoting to other systems.

🟢

If Mitigated

Limited impact if proper web application firewalls and input validation are in place, though risk remains significant.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending specially crafted requests to vulnerable endpoints. Public proof-of-concept code exists.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.0.15 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/mail-picker/vulnerability/wordpress-mail-picker-plugin-1-0-14-php-object-injection-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find Mail Picker plugin. 4. Click 'Update Now' if update available. 5. If no update available, deactivate and delete plugin immediately.

🔧 Temporary Workarounds

Disable Mail Picker Plugin

all

Deactivate the vulnerable plugin to prevent exploitation.

wp plugin deactivate mail-picker

Web Application Firewall Rule

all

Block requests containing serialized PHP objects to vulnerable endpoints.

ModSecurity rule: SecRule REQUEST_BODY "@rx (O:\d+:\"[^"]+\":\d+:\{[^}]+\})" "id:1001,phase:2,deny,status:403,msg:'PHP Object Injection Attempt'"
WAF configuration: Block patterns containing serialized PHP objects

🧯 If You Can't Patch

  • Immediately deactivate and remove the Mail Picker plugin from all WordPress installations
  • Implement strict input validation and sanitization for all user-supplied data in custom code

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for Mail Picker version. If version is 1.0.14 or earlier, system is vulnerable.

Check Version:

wp plugin list --name=mail-picker --field=version

Verify Fix Applied:

Verify Mail Picker plugin version is 1.0.15 or later, or confirm plugin is completely removed from plugins directory.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to WordPress admin-ajax.php or other endpoints with serialized data
  • PHP errors related to unserialize() function
  • Unexpected file creation in wp-content/uploads or other directories

Network Indicators:

  • HTTP requests containing serialized PHP object patterns (O: followed by numbers and braces)
  • Traffic to known malicious domains from web server

SIEM Query:

source="web_server_logs" AND (uri="*admin-ajax.php*" OR uri="*wp-admin*" OR uri="*wp-json*") AND (request_body="*O:[0-9]+:*" OR request_body="*s:[0-9]+:*")

🔗 References

📤 Share & Export