The JetEngine plugin for WordPress is vulnerable to SQL Injection via the `listing_load_more` AJAX action in all versions up to, and including, 3.8.6.1. This is due to the `filtered_query` parameter being excluded from the HMAC signature validation (allowing attacker-controlled input to bypass security checks) combined with the `prepare_where_clause()` method in the SQL Query Builder not sanitizing the `compare` operator before concatenating it into SQL statements. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database, provided the site has a JetEngine Listing Grid with Load More enabled that uses a SQL Query Builder query.
CVE-2026-4662 is a critical SQL Injection vulnerability in JetEngine WordPress plugin (versions ≤3.8.6.1) affecting unauthenticated attackers. The vulnerability stems from inadequate HMAC signature validation on the `filtered_query` parameter combined with unsanitized SQL operators in the Query Builder, allowing attackers to extract sensitive database information. This poses significant risk to Saudi organizations using WordPress-based platforms for content management and e-commerce.
IMMEDIATE ACTIONS:
1. Identify all WordPress installations using JetEngine plugin version 3.8.6.1 or earlier
2. Disable JetEngine Listing Grid Load More functionality immediately if patch unavailable
3. Restrict access to affected AJAX endpoints via WAF rules blocking `listing_load_more` action
PATCHING GUIDANCE:
1. Monitor JetEngine official repository for security patch release
2. When patch available, immediately update to patched version
3. Test in staging environment before production deployment
COMPENSATING CONTROLS (until patch available):
1. Implement Web Application Firewall (WAF) rules to block requests containing SQL keywords in `filtered_query` parameter (UNION, SELECT, INSERT, DELETE, DROP, etc.)
2. Add rate limiting on `listing_load_more` AJAX endpoint (max 10 requests/minute per IP)
3. Enable database query logging and monitor for suspicious SQL patterns
4. Implement input validation at WAF level: reject `compare` operator values outside whitelist (=, !=, <, >, <=, >=, LIKE, IN, BETWEEN)
5. Disable AJAX endpoint entirely if Load More feature not critical: add to wp-config.php: `define('JETENGINE_DISABLE_LOAD_MORE', true);`
DETECTION RULES:
1. Monitor access logs for POST requests to `/wp-admin/admin-ajax.php?action=listing_load_more`
2. Alert on `filtered_query` parameters containing: UNION, SELECT, OR 1=1, SLEEP, BENCHMARK, CAST, CONVERT
3. Database audit: flag queries with unexpected UNION clauses or multiple SELECT statements
4. IDS/IPS signature: detect SQL injection patterns in AJAX POST data with `compare` operator manipulation
الإجراءات الفورية:
1. تحديد جميع تثبيتات WordPress التي تستخدم إضافة JetEngine الإصدار 3.8.6.1 أو أقدم
2. تعطيل وظيفة JetEngine Listing Grid Load More فوراً إذا لم يكن الرقعة متاحة
3. تقييد الوصول إلى نقاط نهاية AJAX المتأثرة عبر قواعد WAF التي تحظر إجراء `listing_load_more`
إرشادات التصحيح:
1. مراقبة مستودع JetEngine الرسمي لإصدار رقعة الأمان
2. عند توفر الرقعة، قم بالتحديث الفوري إلى الإصدار المصحح
3. اختبر في بيئة التطوير قبل نشر الإنتاج
الضوابط البديلة (حتى توفر الرقعة):
1. تنفيذ قواعد جدار الحماية (WAF) لحظر الطلبات التي تحتوي على كلمات SQL في معامل `filtered_query` (UNION, SELECT, INSERT, DELETE, DROP, إلخ)
2. إضافة تحديد معدل على نقطة نهاية AJAX `listing_load_more` (الحد الأقصى 10 طلبات/دقيقة لكل IP)
3. تفعيل تسجيل استعلامات قاعدة البيانات ومراقبة أنماط SQL المريبة
4. تنفيذ التحقق من الإدخال على مستوى WAF: رفض قيم مشغل `compare` خارج القائمة البيضاء (=, !=, <, >, <=, >=, LIKE, IN, BETWEEN)
5. تعطيل نقطة النهاية AJAX بالكامل إذا لم تكن ميزة Load More حرجة
قواعد الكشف:
1. مراقبة سجلات الوصول لطلبات POST إلى `/wp-admin/admin-ajax.php?action=listing_load_more`
2. التنبيه على معاملات `filtered_query` التي تحتوي على: UNION, SELECT, OR 1=1, SLEEP, BENCHMARK, CAST, CONVERT
3. تدقيق قاعدة البيانات: وضع علامة على الاستعلامات ذات جملات UNION غير المتوقعة
4. توقيع IDS/IPS: كشف أنماط حقن SQL في بيانات AJAX POST مع معالجة مشغل `compare`