CVE-2025-1402
📋 TL;DR
This vulnerability in the Event Tickets and Registration WordPress plugin allows authenticated attackers with Contributor-level access or higher to delete arbitrary attendee tickets without proper authorization. It affects all plugin versions up to and including 5.19.1.1. The missing capability check in the 'ajax_ticket_delete' function enables unauthorized data deletion.
💻 Affected Systems
- Event Tickets and Registration WordPress plugin
📦 What is this software?
Event Tickets by Theeventscalendar
⚠️ Risk & Real-World Impact
Worst Case
Malicious contributors could delete all attendee tickets for events, causing data loss, disrupting event management, and potentially affecting business operations or customer relationships.
Likely Case
Disgruntled or compromised contributor accounts deleting specific attendee tickets, causing administrative headaches and requiring data restoration from backups.
If Mitigated
Minimal impact with proper user access controls, regular backups, and monitoring of user activities.
🎯 Exploit Status
Exploitation requires authenticated access but is straightforward once attacker has Contributor credentials. The vulnerability is publicly documented with technical details.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Versions after 5.19.1.1
Vendor Advisory: https://wordpress.org/plugins/event-tickets/#developers
Restart Required: No
Instructions:
1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'Event Tickets and Registration'. 4. Click 'Update Now' if available. 5. Alternatively, download latest version from WordPress plugin repository and manually update.
🔧 Temporary Workarounds
Remove Contributor Delete Capability
allTemporarily remove ticket deletion capability from Contributor role using WordPress role management.
// Add to theme's functions.php or custom plugin:
add_action('init', 'remove_contributor_ticket_delete');
function remove_contributor_ticket_delete() {
$role = get_role('contributor');
if ($role) {
$role->remove_cap('delete_tickets');
}
}
Disable AJAX Endpoint
linuxBlock access to the vulnerable AJAX endpoint via .htaccess or web server configuration.
# Add to .htaccess for Apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} action=ajax_ticket_delete
RewriteRule ^wp-admin/admin-ajax\.php$ - [F,L]
</IfModule>
# Nginx configuration:
location ~* ^/wp-admin/admin-ajax\.php$ {
if ($args ~* "action=ajax_ticket_delete") {
return 403;
}
}
🧯 If You Can't Patch
- Restrict Contributor role assignments to trusted users only
- Implement regular backups of attendee data and test restoration procedures
🔍 How to Verify
Check if Vulnerable:
Check plugin version in WordPress admin → Plugins → Event Tickets and Registration. If version is 5.19.1.1 or lower, you are vulnerable.
Check Version:
wp plugin get event-tickets --field=version # WP-CLI command
Verify Fix Applied:
After updating, verify version is higher than 5.19.1.1. Test with Contributor account that ticket deletion requires proper permissions.
📡 Detection & Monitoring
Log Indicators:
- Multiple DELETE requests to /wp-admin/admin-ajax.php with action=ajax_ticket_delete
- Unusual ticket deletion activity from Contributor accounts
- Failed permission checks in WordPress debug logs
Network Indicators:
- POST requests to admin-ajax.php with ticket deletion parameters from unexpected IPs
- Spike in AJAX requests from contributor-level users
SIEM Query:
source="wordpress.log" AND "admin-ajax.php" AND "ajax_ticket_delete" AND (user_role="contributor" OR user_role="author" OR user_role="editor")
🔗 References
- https://plugins.trac.wordpress.org/browser/event-tickets/tags/5.18.1/src/Tribe/Assets.php#L202
- https://plugins.trac.wordpress.org/browser/event-tickets/tags/5.18.1/src/Tribe/Metabox.php#L30
- https://plugins.trac.wordpress.org/browser/event-tickets/tags/5.18.1/src/Tribe/Metabox.php#L490
- https://wordfence.freshdesk.com/a/tickets/375051
- https://www.wordfence.com/threat-intel/vulnerabilities/id/dbd838b6-7792-4378-8969-a70c6e16ff6a?source=cve