The Booking for Appointments and Events Calendar – Amelia plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 2.1.3. This is due to the `UpdateProviderCommandHandler` failing to validate changes to the `externalId` field when a Provider (Employee) user updates their own profile. The `externalId` maps directly to a WordPress user ID and is passed to `wp_set_password()` and `wp_update_user()` without authorization checks. This makes it possible for authenticated attackers, with Provider-level (Employee) access and above, to take over any WordPress account — including Administrator — by injecting an arbitrary `externalId` value when updating their own provider profile.
CVE-2026-5465 is a critical privilege escalation vulnerability in the Amelia WordPress plugin (versions ≤2.1.3) affecting appointment booking systems. Authenticated Provider-level users can inject arbitrary WordPress user IDs via the `externalId` field to take over any account, including Administrator accounts, without proper authorization validation. This poses severe risk to Saudi organizations using WordPress-based booking systems for healthcare, government services, and corporate scheduling.
IMMEDIATE ACTIONS:
1. Disable the Amelia plugin immediately if not critical to operations
2. Restrict Provider-level user access to trusted personnel only
3. Implement IP whitelisting for Provider account access
4. Monitor WordPress user account modifications and password changes in real-time
5. Audit all Provider accounts for unauthorized `externalId` modifications
PATCHING GUIDANCE:
1. Check plugin repository for version 2.1.4+ when available
2. Do NOT update to any version until official patch is released
3. Subscribe to Amelia security notifications
COMPENSATING CONTROLS (until patch available):
1. Implement Web Application Firewall (WAF) rules to block requests modifying `externalId` field
2. Add database-level triggers to log and alert on `externalId` changes
3. Enforce strong password policies and MFA for all WordPress accounts
4. Implement WordPress security plugin with account takeover detection
5. Restrict Provider role creation and management to administrators only
6. Use WordPress user role editor to remove unnecessary permissions from Provider role
DETECTION RULES:
1. Monitor wp_users table for unexpected password changes
2. Alert on any API calls to UpdateProviderCommandHandler with externalId parameter
3. Log all Provider profile update requests and cross-reference with user ID changes
4. Implement SIEM rules: detect authentication from new IPs immediately after Provider profile updates
5. Monitor WordPress admin_init hook for unauthorized user modifications
الإجراءات الفورية:
1. تعطيل مكون Amelia فوراً إذا لم يكن حرجاً للعمليات
2. تقييد وصول مستخدمي مستوى المزود للموظفين الموثوقين فقط
3. تطبيق قائمة بيضاء للعناوين IP لوصول حساب المزود
4. مراقبة تعديلات حساب مستخدم WordPress وتغييرات كلمات المرور في الوقت الفعلي
5. تدقيق جميع حسابات المزود للتعديلات غير المصرح بها على `externalId`
إرشادات التصحيح:
1. تحقق من مستودع المكون للإصدار 2.1.4+ عند توفره
2. لا تحدّث إلى أي إصدار حتى يتم إصدار التصحيح الرسمي
3. اشترك في إشعارات أمان Amelia
الضوابط البديلة (حتى توفر التصحيح):
1. تطبيق قواعد جدار حماية تطبيقات الويب (WAF) لحظر الطلبات التي تعدل حقل `externalId`
2. إضافة محفزات على مستوى قاعدة البيانات لتسجيل والتنبيه عن تغييرات `externalId`
3. فرض سياسات كلمات مرور قوية والمصادقة متعددة العوامل لجميع حسابات WordPress
4. تطبيق مكون أمان WordPress مع كشف الاستيلاء على الحساب
5. تقييد إنشاء وإدارة دور المزود للمسؤولين فقط
6. استخدام محرر دور مستخدم WordPress لإزالة الأذونات غير الضرورية من دور المزود
قواعد الكشف:
1. مراقبة جدول wp_users للتغييرات غير المتوقعة في كلمات المرور
2. التنبيه على أي استدعاءات API إلى UpdateProviderCommandHandler مع معامل externalId
3. تسجيل جميع طلبات تحديث ملف تعريف المزود والمقارنة المرجعية مع تغييرات معرف المستخدم
4. تطبيق قواعد SIEM: كشف المصادقة من عناوين IP جديدة فوراً بعد تحديثات ملف تعريف المزود
5. مراقبة خطاف admin_init في WordPress للتعديلات غير المصرح بها على المستخدم