La sicurezza di un sito WordPress è messa costantemente alla prova da diverse minacce, tra cui gli attacchi XSS (Cross-Site Scripting), una delle tecniche più diffuse e insidiose utilizzate dagli hacker. Si tratta di attacchi che permettono di iniettare script dannosi all’interno delle pagine web, mettendo a rischio dati sensibili e compromettono la navigazione degli utenti.
Per ridurre al minimo le possibilità di essere colpiti, è fondamentale conoscere le vulnerabilità più comuni e adottare configurazioni mirate e strumenti efficaci. Con alcune accortezze durante lo sviluppo dei componenti o tramite l’ausilio di plugin specifici (per i meno esperti), possiamo potenziare la sicurezza e mantenere il sito al riparo da intrusioni indesiderate.
Di cosa parleremo..
Cosa sono gli Attacchi XSS e come funzionano, in breve
Gli attacchi XSS (Cross-Site Scripting) sfruttano vulnerabilità presenti in un sito web per iniettare codice maligno, solitamente script in JavaScript, che viene eseguito direttamente nel browser dell’utente. L’obiettivo principale è quello di rubare informazioni sensibili, come cookie di sessione, credenziali di accesso, o di reindirizzare gli utenti verso siti malevoli. WordPress, essendo una delle piattaforme più utilizzate al mondo, rappresenta un bersaglio particolarmente appetibile per questi attacchi, soprattutto se non adeguatamente protetto.
Ecco le tre principali tipologie di attacco XSS:
- XSS riflesso: il codice maligno viene inviato e immediatamente “riflesso” nella risposta del server.
- XSS persistente: lo script viene memorizzato direttamente sul server e si attiva ogni volta che un utente visita la pagina infetta.
- XSS DOM-based: sfrutta le vulnerabilità del lato client, manipolando il DOM della pagina web.
Esempi pratici:
- Un utente invia un commento contenente
<script>alert('XSS');</script>
. Se il sito è vulnerabile, tutti gli altri utenti che visiteranno la pagina con i commenti, vedranno comparire un messaggio di allerta perché lo script sarà eseguito dal loro browser. - Un modulo di ricerca vulnerabile che mostra direttamente l’input dell’utente può essere manipolato per iniettare script dannosi nella pagina dei risultati.
Lo script viene eseguito direttamente dal browser dell’utente, consentendo quindi la lettura dei dati privati (dati inviati al server o cookie locali) che possono essere inviati a server di terze parti senza che l’utente ne sia consapevole.
Quali sono le vulnerabilità più comuni sui siti WordPress
WordPress, pur essendo una piattaforma abbastanza solida, presenta alcune aree particolarmente esposte agli attacchi XSS, soprattutto se non vengono prese le dovute precauzioni o se vengono installati molti plugin o template da sviluppatori “un po’ distratti“.
Tra le vulnerabilità più comuni dei template troviamo:
- Moduli di contatto e form personalizzati: questi elementi, se non sono adeguatamente protetti, possono permettere l’inserimento di codice maligno direttamente nei campi di input.
- Campi di ricerca: un campo di ricerca che non filtra correttamente l’input dell’utente può riflettere codice dannoso nella pagina dei risultati.
- Sezione commenti: i commenti non filtrati sono uno dei veicoli più frequenti per gli attacchi XSS, soprattutto su siti che permettono l’inserimento di contenuti HTML o JavaScript.
Ma in generale il vero punto critico riguarda plugin e temi di terze parti, che talvolta non seguono le migliori pratiche di sicurezza e introducono vulnerabilità nel sistema.
La storia di WordPress ha visto diversi casi di exploit XSS legati proprio a plugin ampiamente diffusi, il che evidenzia l’importanza di limitare l’uso di plugin e di scegliere componenti affidabili e costantemente aggiornati (con criterio).
Quali sono le configurazioni essenziali per prevenire gli attacchi xss
Il primo passo fondamentale per proteggere un sito WordPress dagli attacchi XSS è mantenere sempre aggiornati il core di WordPress, i plugin e i temi. Ogni nuova versione spesso include patch di sicurezza che correggono vulnerabilità conosciute. Lasciare elementi non aggiornati significa esporsi inutilmente ai rischi.
Un altro aspetto cruciale è la gestione accurata dei permessi utente. È
importante:
- Assegnare ruoli o ruoli più elevati solo quando strettamente necessari. Ad esempio non aprite l’iscrizione come “subscriber” al pubblico se il vostro sito non è aperto al pubblico. Con alcune vulnerabilità un utente può “scalare” ad amministratore!
- Limitare l’accesso alle aree di amministrazione e di modifica dei contenuti solo alle persone necessarie.
Inoltre, possiamo disabilitare l’esecuzione di codice non necessario in alcune directory (come /wp-content/uploads) tramite la configurazione del file .htaccess
nella cartella uploads (su apache e litespeed), impedendo così l’esecuzione di file PHP non autorizzati.
<Files *.php>
deny from all
</Files>
Best practice e suggerimenti
Ci sono alcune pratiche essenziali che ogni amministratore o sviluppatore di un sito WordPress dovrebbe mettere in atto per limitare al massimo il rischio di attacchi XSS.
- Sanitizzazione e validazione dei dati: ogni input inviato dagli utenti deve essere sempre sanitizzato (ripulito da eventuale codice pericoloso) e validato (verificato che sia conforme ai criteri previsti) sia lato client che lato server. WordPress mette a disposizione funzioni come
sanitize_text_field()
ewp_kses_post()
utili a questo scopo. - Content Security Policy (CSP): configurare correttamente una CSP aiuta a prevenire l’esecuzione di script non autorizzati. Possiamo aggiungere questa direttiva tramite il file
.htaccess
o direttamente dal server. - Backup regolari: effettuare backup periodici del sito e del database permette di ripristinare rapidamente la situazione in caso di compromissione, limitando i danni.
Plugin per ridurre l’esposizione XSS
Affidarsi a plugin di sicurezza è una delle strategie più comuni per rafforzare la protezione contro gli attacchi XSS su WordPress, ma ovviamente hanno delle controindicazioni.
Si tratta di strumenti che offrono funzionalità di filtraggio, monitoraggio e blocco automatico di attività sospette ma ne consiglio l’utilizzo solo alle persone poco esperte.
Tra i vari plugin troviamo:
- Wordfence Security: offre protezione completa con un firewall integrato e funzionalità specifiche per bloccare gli attacchi XSS. Purtroppo appesantisce molto il sito e il database, riempiendolo di dati orfani ed inutili.
- Sucuri Security: monitora il sito in tempo reale e rileva vulnerabilità legate all’iniezione di codice maligno.
- iThemes Security: implementa diverse misure preventive, tra cui il rafforzamento delle configurazioni contro XSS e altre minacce comuni.
- All In One WP Security & Firewall: fornisce opzioni dettagliate per la sanitizzazione dei dati e la configurazione di regole firewall personalizzate.
Per una configurazione rapida, ad esempio con Wordfence, possiamo attivare la protezione XSS accedendo alla sezione “Firewall”, impostando il livello di sicurezza su “Learning Mode” per alcuni giorni e poi su “Enabled and Protecting” per bloccare in automatico qualsiasi tentativo di attacco.