The Infility Global plugin for WordPress is vulnerable to SQL Injection via the 'orderby' and 'order' parameters in all versions up to, and including, 2.15.16. This is due to insufficient escaping on user supplied parameters and lack of sufficient preparation on the existing SQL query within the show_control_data::post_list() function, which is registered as an admin menu page with only the 'read' capability. This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.
The Infility Global WordPress plugin versions up to 2.15.16 contain a SQL Injection vulnerability in the post_list() function accessible to authenticated users with Subscriber-level privileges. Attackers can manipulate 'orderby' and 'order' parameters to extract sensitive database information. While no public exploit exists and patching is unavailable, the low privilege requirement and direct database access capability pose significant risk to WordPress installations in Saudi organizations.
IMMEDIATE ACTIONS:
1. Audit all WordPress installations for Infility Global plugin presence and version (check wp-content/plugins/infility-global/)
2. Disable the plugin immediately: wp-cli plugin deactivate infility-global
3. Review database access logs for suspicious SQL patterns in admin-ajax.php requests
4. Check for unauthorized data exports in WordPress audit logs (2024-01-01 onwards)
COMPENSATING CONTROLS (until patch available):
1. Restrict 'read' capability to trusted admin roles only via role editor plugins
2. Implement Web Application Firewall (WAF) rules to block SQL injection patterns in orderby/order parameters
3. Add database query monitoring to detect UNION SELECT, INFORMATION_SCHEMA, or data exfiltration attempts
4. Implement IP whitelisting for admin-ajax.php requests
5. Enable WordPress security plugins (Wordfence, Sucuri) with SQL injection detection
DETECTION RULES:
- Monitor POST requests to /wp-admin/admin-ajax.php with action=show_control_data containing SQL keywords (UNION, SELECT, FROM, WHERE) in orderby/order parameters
- Alert on database queries from wp_posts table with unusual UNION statements
- Track failed authentication attempts followed by subscriber-level access to post_list function
PATCHING STRATEGY:
1. Contact Infility Global support for security update timeline
2. Prepare alternative plugin evaluation (e.g., native WordPress post management)
3. Plan migration timeline if no patch released within 30 days
4. Test any future patches in staging environment before production deployment
الإجراءات الفورية:
1. تدقيق جميع تثبيتات WordPress للتحقق من وجود مكون Infility Global والإصدار
2. تعطيل المكون فوراً عبر لوحة التحكم
3. مراجعة سجلات الوصول إلى قاعدة البيانات للبحث عن أنماط SQL مريبة
4. التحقق من التصديرات غير المصرح بها في سجلات التدقيق
الضوابط التعويضية (حتى توفر التصحيح):
1. تقييد صلاحية 'read' للأدوار الموثوقة فقط
2. تطبيق قواعد جدار الحماية لحجب أنماط حقن SQL
3. مراقبة استعلامات قاعدة البيانات للكشف عن محاولات الاستخراج
4. تطبيق قائمة بيضاء للعناوين IP
5. تفعيل مكونات أمان WordPress المتقدمة
قواعد الكشف:
- مراقبة طلبات POST تحتوي على كلمات SQL في معاملات orderby/order
- تنبيهات على استعلامات قاعدة البيانات غير العادية
- تتبع محاولات الوصول المريبة من قبل المشتركين
استراتيجية التصحيح:
1. التواصل مع دعم Infility Global
2. تقييم المكونات البديلة
3. التخطيط للهجرة إذا لم يتم إصدار تصحيح خلال 30 يوماً