
Mitiga gli attacchi load-scripts / load-styles di WordPress (CVE-2018-6389)
Mitiga gli attacchi WordPress a load-scripts / load-styles di CVE-2018-6389.
Nega tutte le richieste a wp-admin/load-scripts.php e wp-admin/load-styles.php tramite Nginx.
TL;DR
esso [WordPress] userà load-scripts.php (per i file JS) o load-styles.php (per i file CSS) e il browser riceverà più file JS/CSS attraverso una singola richiesta - quindi dal punto di vista delle prestazioni è meglio farlo e la pagina si caricherà più velocemente. Questa funzionalità è stata progettata solo per le pagine di amministrazione, ma viene utilizzata anche nella pagina wp-login.php, quindi non viene richiesta alcuna autenticazione per questi file.
-- Come effettuare DoS sul 29% dei siti web mondiali - CVE-2018-6389
# per esempio
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
# lo stesso vale per https://example.com/wp/wp-admin/load-styles.php
Una singola richiesta (nessuna autenticazione richiesta) potrebbe far eseguire al server >180 operazioni di I/O di lettura e concatenare tutti i file in una risposta >4MB. Per server piccoli senza firewall adeguati e limitazione della velocità, questo è sufficiente per eseguire attacchi DoS.
- Dovresti davvero usare HTTPS. Se non lo fai, non dovresti avere un sito web in primo luogo.
- Quando usi HTTPS, non c'è motivo di non usare HTTP/2.
- Con HTTP/2, non c'è bisogno di concatenare i file. È in realtà un anti-pattern.
-- Come mitigare CVE-2018-6389 – l'attacco DoS load-scripts.php in WordPress
load-scripts.php e load-styles.phpAggiungi questo ruolo a requirements.yml:
# requirements.yml
- src: https://github.com/ItinerisLtd/trellis-cve-2018-6389
version: 0.1.0 # Controlla l'ultima versione!
Esegui il comando:
➜ ansible-galaxy install -r requirements.yml --force
Aggiungi il ruolo in dev.yml e server.yml, subito dopo role: wordpress-setup:
roles:
# alcuni altri ruoli Trellis ...
- { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt] }
- { role: trellis-cve-2018-6389, tags: [nginx, wordpress, wordpress-setup] }
# alcuni altri ruoli Trellis ...
Poi, ri-provisiona come al solito:
# 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>
Disabilita la concatenazione:
# config/application.php OPPURE wp-config.php OPPURE equivalente
# normale OPPURE Bedrock obsoleto:
define('CONCATENATE_SCRIPTS', false);
# Bedrock con roots/wp-config:
Config::define('CONCATENATE_SCRIPTS', false);
Poi, esegui il deploy come al solito:
# https://roots.io/trellis/docs/deploys/
➜ ./bin/deploy.sh <environment> <domain>
# oppure in alternativa
➜ ansible-playbook deploy.yml -e "site=<domain> env=<environment>"
È compito dell'azienda di hosting mitigare questo tipo di attacchi.
Grazie! Sono contento che ti piaccia. È importante far sapere al mio capo che qualcuno sta usando questo progetto. Invece di lasciare recensioni su wp.org, considera:
➜ ansible-playbook -i 'localhost,' --syntax-check tests/test.yml
trellis-cve-2018-6389 è un progetto di Itineris Limited creato da Tang Rufus.
Un ringraziamento speciale al team di Roots il cui Trellis rende possibile questo progetto.
L'elenco completo dei contributori si trova qui.
Per favore, fornisci un feedback! Vogliamo rendere questa libreria utile per quanti più progetti possibile. Per favore invia un issue e segnala cosa ti piace e cosa no, oppure fai un fork del progetto e fai suggerimenti. Nessun issue è troppo piccolo.
Consulta CHANGELOG per maggiori informazioni su cosa è cambiato di recente.
trellis-cve-2018-6389 è rilasciato sotto Licenza MIT.