
التخفيف من هجمات CVE-2018-6389 الخاصة بـ WordPress load-scripts / load-styles
تخفيف هجمات WordPress load-scripts / load-styles المتعلقة بـ CVE-2018-6389.
رفض جميع الطلبات الموجهة إلى wp-admin/load-scripts.php و wp-admin/load-styles.php عبر Nginx.
الخلاصة
يستخدم WordPress ملف load-scripts.php (للملفات JS) أو load-styles.php (لملفات CSS) وسيحصل المتصفح على ملفات JS/CSS متعددة من خلال طلب واحد - لذا من ناحية الأداء فإن القيام بذلك أفضل وسيتم تحميل الصفحة بشكل أسرع. تم تصميم هذه الميزة فقط لصفحات الإدارة، ولكنها تستخدم أيضًا في صفحة wp-login.php، لذلك لا يتم فرض أي مصادقة على هذه الملفات.
-- How to DoS 29% of the World Wide Websites - CVE-2018-6389
# على سبيل المثال
https://example.com/wp/wp-admin/load-scripts.php?c=1&load[]=jquery-ui-core,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check
# نفس الشيء ينطبق على https://example.com/wp/wp-admin/load-styles.php
طلب واحد (بدون مصادقة) يمكن أن يتسبب في قيام الخادم بأكثر من 180 عملية قراءة IO ودمج جميع الملفات في استجابة أكبر من 4 ميجابايت. بالنسبة للخوادم الصغيرة التي لا تحتوي على جدران نارية مناسبة وتحديد لمعدل الطلبات، فإن هذا يكفي لتنفيذ هجمات DoS.
- يجب عليك حقًا استخدام HTTPS. إذا لم تفعل، فلا ينبغي أن يكون لديك موقع ويب من الأساس.
- عندما تستخدم HTTPS، لا يوجد سبب لعدم استخدام HTTP/2.
- مع HTTP/2، لا حاجة لدمج ملفاتك. إنه في الواقع نمط سيء.
-- How to mitigate CVE-2018-6389 – the load-scripts.php DoS "attack" in WordPress
load-scripts.php و load-styles.phpأضف هذا الدور إلى requirements.yml:
# requirements.yml
- src: https://github.com/ItinerisLtd/trellis-cve-2018-6389
version: 0.1.0 # تحقق من أحدث إصدار!
قم بتشغيل الأمر:
➜ ansible-galaxy install -r requirements.yml --force
أضف الدور في dev.yml و server.yml مباشرة بعد role: wordpress-setup:
roles:
# بعض أدوار Trellis الأخرى ...
- { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt] }
- { role: trellis-cve-2018-6389, tags: [nginx, wordpress, wordpress-setup] }
# بعض أدوار Trellis الأخرى ...
ثم، أعد التجهيز كالمعتاد:
# https://roots.io/trellis/docs/local-development-setup/
➜ vagrant reload --provision
# https://roots.io/trellis/docs/remote-server-setup/
➜ ansible-playbook server.yml -e env=<بيئة>
تعطيل الدمج:
# config/application.php OR wp-config.php OR ما يعادلها
# إصدار عادي أو Bedrock قديم:
define('CONCATENATE_SCRIPTS', false);
# Bedrock مع roots/wp-config:
Config::define('CONCATENATE_SCRIPTS', false);
ثم، قم بالنشر كالمعتاد:
# https://roots.io/trellis/docs/deploys/
➜ ./bin/deploy.sh <بيئة> <نطاق>
# أو بديلاً
➜ ansible-playbook deploy.yml -e "site=<نطاق> env=<بيئة>"
لا، لا يمكنك استخدام هذا على الاستضافة المُدارة مثل Kinsta أو WP Engine.
إنها وظيفة شركة الاستضافة تخفيف هذا النوع من الهجمات.
شكرًا! سعيد أنك أحببته. من المهم أن أجعل مديري يعرف أن هناك من يستخدم هذا المشروع. بدلاً من إعطاء تقييمات على wp.org، فكر في:
➜ ansible-playbook -i 'localhost,' --syntax-check tests/test.yml
trellis-cve-2018-6389 هو مشروع من Itineris Limited أنشأه Tang Rufus.
شكر خاص لـ فريق Roots الذي جعل Trellis هذا المشروع ممكنًا.
القائمة الكاملة للمساهمين يمكن العثور عليها هنا.
يرجى تقديم تعليقات! نريد أن نجعل هذه المكتبة مفيدة في أكبر عدد ممكن من المشاريع. يرجى إرسال مشكلة والإشارة إلى ما يعجبك وما لا يعجبك، أو قم بعمل fork للمشروع واقترح تحسينات. لا توجد مشكلة صغيرة جدًا.
يرجى الاطلاع على CHANGELOG لمزيد من المعلومات حول ما تم تغييره مؤخرًا.
trellis-cve-2018-6389 مُصدَر بموجب رخصة MIT.