The Perfmatters plugin for WordPress is vulnerable to arbitrary file deletion via path traversal in all versions up to, and including, 2.5.9.1. This is due to the `PMCS::action_handler()` method processing the `$_GET['delete']` parameter without any sanitization, authorization check, or nonce verification. The unsanitized filename is concatenated with the storage directory path and passed to `unlink()`. This makes it possible for authenticated attackers, with Subscriber-level access and above, to delete arbitrary files on the server by using `../` path traversal sequences, including `wp-config.php` which would force WordPress into the installation wizard and allow full site takeover.
CVE-2026-4350 is a critical path traversal vulnerability in the Perfmatters WordPress plugin (versions ≤2.5.9.1) that allows authenticated Subscriber-level users to delete arbitrary files on the server, including wp-config.php. This vulnerability lacks proper input sanitization, authorization checks, and nonce verification, enabling attackers to trigger a WordPress installation wizard and achieve complete site takeover. With no patch currently available and no exploit publicly disclosed, organizations must immediately implement compensating controls.
IMMEDIATE ACTIONS:
1. Audit all WordPress installations in your environment to identify if Perfmatters plugin is installed and determine current version
2. If Perfmatters ≤2.5.9.1 is installed, immediately disable the plugin via wp-cli: wp plugin deactivate perfmatters
3. Restrict database user permissions to read-only where possible to limit file deletion impact
4. Implement Web Application Firewall (WAF) rules to block requests containing '../' sequences in GET parameters
5. Enable WordPress security logging and monitor for suspicious file deletion attempts
COMPENSATING CONTROLS (until patch available):
6. Implement strict file system permissions: chmod 644 wp-config.php and chmod 755 wp-content/
7. Create immutable backups of wp-config.php using: chattr +i wp-config.php
8. Restrict Subscriber-level user creation and audit existing Subscriber accounts
9. Implement IP whitelisting for WordPress admin access
10. Deploy ModSecurity rules to detect path traversal patterns in HTTP requests
11. Configure automated file integrity monitoring (AIDE/Tripwire) for critical WordPress files
12. Implement Web Application Firewall rules: Block requests with pattern '(\.\./)' in query strings
DETECTION RULES:
- Monitor access logs for GET requests containing 'delete=' parameter with '../' sequences
- Alert on any unlink() or file deletion operations initiated by Subscriber-level users
- Track wp-config.php access and modification attempts
- Monitor for WordPress installation wizard initialization (wp-admin/setup-config.php access)
PATCHING STRATEGY:
- Contact Perfmatters support for patch timeline
- Prepare for immediate plugin update once patch is released
- Consider alternative WordPress optimization plugins as contingency
الإجراءات الفورية:
1. قم بتدقيق جميع تثبيتات WordPress في بيئتك لتحديد ما إذا كان مكون Perfmatters مثبتاً وتحديد الإصدار الحالي
2. إذا كان Perfmatters ≤2.5.9.1 مثبتاً، قم بتعطيل المكون فوراً عبر wp-cli: wp plugin deactivate perfmatters
3. قيّد أذونات مستخدم قاعدة البيانات للقراءة فقط حيث أمكن لتحديد تأثير حذف الملفات
4. تنفيذ قواعد جدار حماية تطبيقات الويب (WAF) لحجب الطلبات التي تحتوي على تسلسلات '../'
5. تفعيل تسجيل أمان WordPress ومراقبة محاولات حذف الملفات المريبة
الضوابط التعويضية (حتى توفر التصحيح):
6. تنفيذ أذونات نظام الملفات الصارمة: chmod 644 wp-config.php و chmod 755 wp-content/
7. إنشاء نسخ احتياطية ثابتة من wp-config.php باستخدام: chattr +i wp-config.php
8. تقييد إنشاء حسابات المستخدمين على مستوى المشترك وتدقيق الحسابات الموجودة
9. تنفيذ القائمة البيضاء للعناوين IP لوصول WordPress admin
10. نشر قواعد ModSecurity للكشف عن أنماط عبور المسارات في طلبات HTTP
11. تكوين مراقبة سلامة الملفات المؤتمتة (AIDE/Tripwire) للملفات الحرجة في WordPress
12. تنفيذ قواعد جدار حماية تطبيقات الويب: حجب الطلبات بنمط '(\.\./)' في سلاسل الاستعلام
قواعد الكشف:
- مراقبة سجلات الوصول للطلبات GET التي تحتوي على معامل 'delete=' مع تسلسلات '../'
- تنبيه على أي عمليات unlink() أو حذف ملفات يتم بدؤها بواسطة مستخدمي مستوى المشترك
- تتبع وصول wp-config.php ومحاولات التعديل
- مراقبة تهيئة معالج تثبيت WordPress (وصول wp-admin/setup-config.php)
استراتيجية التصحيح:
- اتصل بدعم Perfmatters للحصول على جدول زمني للتصحيح
- التحضير للتحديث الفوري للمكون بمجرد إصدار التصحيح
- النظر في مكونات تحسين WordPress البديلة كخطة احتياطية