
تحليل تقني وتخفيف دفاعي لسلسلة هجوم من XSS إلى RCE قبل المصادقة في نواة ووردبريس، بما في ذلك تجاوز المُنقّي، وDOM Clobbering، وإساءة استخدام JSONP، وتوقيعات الكشف، والتصحيح.
تحليل تقني ومصفوفة تخفيف دفاعية للناقل CVE-2026-64638 (XSS2Shell)، وهو تناقض حرج في تحليل (parsing) شاشة المصادقة في WordPress Core يسمح بتسلسل Cross-Site Scripting (XSS) منعكس قبل المصادقة مع بدائيات المتصفح (browser primitives) صولًا إلى تنفيذ الكود عن بُعد (RCE).
الخطر الحقيقي لهذا الناقل يكمن في الجمع بين عدة gadgets شرعية مدمجة في نواة التطبيق. ما يُصنَّف مبدئيًا على أنه اكتشاف متوسط التأثير (XSS منعكس)، يتصاعد إلى اختراق كامل للخادم عبر الحلقات التقنية التالية:
[ طلب ما قبل المصادقة ] ➔ [ تناقض الفلاتر ] ➔ [ DOM Clobbering ] ➔ [ Callback JSONP REST API ] ➔ [ تفاعل المشرف ] ➔ [ توليد App Password ] ➔ [ RCE عبر رفع إضافة ]
نقطة الدخول تستغل تباينًا منطقيًا بين دالتين داخليتين لتنظيف المدخلات في شاشة تسجيل الدخول (wp-login.php). فبينما تتجاهل إحداهما بعض وسوم HTML الخاصة بالمنطقة، تقوم الأخرى بإصلاحها، مما يسمح بانعكاس حمولة خبيثة (payload) في معامل اسم المستخدم مباشرةً في DOM الخاصة باستجابة خطأ تسجيل الدخول.
يقوم WordPress افتراضيًا بتحميل سكربتات ملفات تعريف المستخدمين في واجهة تسجيل الدخول (اللازمة لتدفقات إعادة تعيين كلمة المرور). يؤدي حقن HTML إلى تغيير مساحة الأسماء العامة (window.ajaxurl)، وإعادة توجيه الاستدعاءات الشرعية إلى نقطة نهاية (endpoint) يتحكم بها المهاجم.
باستخدام معاملات محددة من REST API الداخلية (_jsonp, _method=GET, _envelope=1)، يفسّر المتصفح الاستجابات على أنها محتوى application/javascript، مما يتيح فرض استدعاء دوال عشوائية مع تجاوز توجيهات صارمة لسياسة أمان المحتوى (CSP) القائمة على nonces.
إذا تفاعل مشرف بجلسة مفتوحة مع المصدر المتأثر، تستغل الحمولة (payload) صلاحياته لتفويض Application Password تلقائيًا في الخلفية. وبهذه البيانات الاعتمادية الثانوية لواجهة API، يتم رفع إضافة (plugin) خبيثة تمنح shell تفاعلية على بيئة تنفيذ PHP.
تم نشر التصحيح الأمني بأثر رجعي على جميع الفروع النشطة لنواة WordPress. تحقق من الإصدار الفرعي الدقيق المثبت على خوادمك.
| الفرع | آخر إصدار ضعيف | الإصدار المصحح (Patch) | حالة الدعم |
|---|---|---|---|
| 7.0 | 7.0.2 | 7.0.3 | الفرع الرئيسي الأسبوعي |
| 6.9 | 6.9.5 | 6.9.6 | Backport أمني |
| 6.8 | 6.8.6 | 6.8.7 | Backport أمني |
| 6.7 | 6.7.5 | 6.7.6 | Backport أمني |
| < 4.7 | جميعها | غير مدعوم | 🚨 خطر حرج / نهاية العمر (End of Life) |
حدّث نواة WordPress فورًا إلى الإصدار المطابق لفرعك. لا تعتمد حصريًا على نظام التحديثات التلقائية في البيئات المؤسسية.
# Forzar actualización de Core vía WP-CLI
wp core update --version=7.0.3 --force
إذا لم يكن تحديث البيئة ممكنًا بشكل فوري، طبّق ضوابط دفاع متعمق (defense in depth) لكسر الحلقات العليا من سلسلة الاستغلال:
define('DISALLOW_FILE_MODS', true); إلى ملف wp-config.php لتقييد تثبيت أو تعديل الكود عبر الواجهة الإلكترونية.wp-login.php حصريًا على نطاقات IP للشركات أو شبكات VPN موثوقة.للتدقيق في ما إذا كانت البنية التحتية قد تعرضت للخطر أو الهجوم قبل تطبيق التصحيح، افحص ملفات سجلات الوصول (Access Logs) ونظام الملفات بحثًا عن الأنماط التالية:
# Buscar intentos de inyección de caracteres HTML o payloads en el login
grep -E "wp-login\.php.*user_login=.*[<>]" /var/log/nginx/access.log
# Buscar llamadas a la REST API que fuercen parámetros de callbacks JSONP
grep -E "wp-json.*_jsonp=" /var/log/nginx/access.log
# Auditar llamadas inusuales de subida de complementos por parte de IPs desconocidas
grep "POST /wp-admin/update.php?action=upload-plugin" /var/log/nginx/access.log
.php شاذة أو حديثة الإنشاء في المسار /wp-content/plugins/ تابعة لإضافات (plugins) غير معروفة أو غير نشطة.