
CVE-2018-6389 वर्डप्रेस load-scripts / load-styles हमलों को कम करें
WordPress load-scripts / load-styles हमलों का CVE-2018-6389 के विरुद्ध शमन।
Nginx द्वारा wp-admin/load-scripts.php और wp-admin/load-styles.php के सभी अनुरोधों को अस्वीकार करें।
संक्षेप में
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 रीड करने और सभी फ़ाइलों को >4MB प्रतिक्रिया में संयोजित करने के लिए मजबूर कर सकता है। उचित फ़ायरवॉल और दर-सीमा के बिना छोटे सर्वरों के लिए, यह 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 में यह role जोड़ें:
# 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 के तुरंत बाद यह role जोड़ें:
roles:
# कुछ अन्य Trellis roles...
- { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt] }
- { role: trellis-cve-2018-6389, tags: [nginx, wordpress, wordpress-setup] }
# कुछ अन्य Trellis roles...
फिर, सामान्य रूप से पुनः-प्रावधान करें:
# 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=<environment>
संयोजन अक्षम करें:
# config/application.php OR wp-config.php OR समकक्ष
# सामान्य या पुराना Bedrock:
define('CONCATENATE_SCRIPTS', false);
# roots/wp-config के साथ Bedrock:
Config::define('CONCATENATE_SCRIPTS', false);
फिर, सामान्य रूप से तैनात करें:
# https://roots.io/trellis/docs/deploys/
➜ ./bin/deploy.sh <environment> <domain>
# या वैकल्पिक रूप से
➜ ansible-playbook deploy.yml -e "site=<domain> env=<environment>"
नहीं, आप इसे प्रबंधित होस्टिंग जैसे Kinsta या WP Engine पर उपयोग नहीं कर सकते।
इस प्रकार के हमलों को कम करना होस्टिंग कंपनी का काम है।
धन्यवाद! खुशी है कि आपको यह पसंद आया। मेरे बॉस को यह बताना महत्वपूर्ण है कि कोई इस प्रोजेक्ट का उपयोग कर रहा है। wp.org पर समीक्षा देने के बजाय, इस पर विचार करें:
➜ ansible-playbook -i 'localhost,' --syntax-check tests/test.yml
trellis-cve-2018-6389 Tang Rufus द्वारा बनाई गई Itineris Limited की एक परियोजना है।
रूट्स टीम को विशेष धन्यवाद, जिनका Trellis इस परियोजना को संभव बनाता है।
योगदानकर्ताओं की पूरी सूची यहाँ पाई जा सकती है।
कृपया प्रतिक्रिया प्रदान करें! हम इस लाइब्रेरी को अधिक से अधिक परियोजनाओं में उपयोगी बनाना चाहते हैं। कृपया एक मुद्दा सबमिट करें और बताएं कि आपको क्या पसंद है और क्या नहीं, या प्रोजेक्ट को फोर्क करें और सुझाव दें। कोई भी मुद्दा बहुत छोटा नहीं है।
हाल ही में क्या बदला है, इसकी अधिक जानकारी के लिए कृपया CHANGELOG देखें।
trellis-cve-2018-6389 MIT लाइसेंस के तहत जारी किया गया है।