Una domanda che mi viene fatta molto spesso è: “ma WordPress è veramente sicuro?”
La risposta non è affatto scontata, ed è più complessa di quanto si pensi…
Procediamo però per ordine, partendo proprio dall’inizio… Una nuova installazione di WordPress è sicura? cioè un’installazione di default (“out-of-the-box“), senza configurare nulla, se non le impostazioni di base, è sicura?
La risposta è no….
Ecco 12 motivi per cui non lo è!
1) ID utente amministratore = 1
WordPress in un’installazione di default, assegna automaticamente all’utente amministratore l’ID 1. Per individuare il nome di login dell’utente amministratore basta collegarsi tramite browser al sito desiderato e digitare nel campo indirizzo nome_sito/?author=1 In alto (segnato col rettangolo rosso) troverete in bella mostra il nome di login dell’utente amministratore!Rischio
Avere a disposizione il nome di login dell’utente amministratore, significa di essere a metà dell’opera… rimane da individuare la password!2) Interfaccia Rest API
L’interfaccia Rest API è un’interfaccia di programmazione per applicazioni presente in WordPress, che permette di interagire a livello programmatico con il sito WordPress prescelto. L’interfaccia dispone di diversi “endpoint” che offrono dei canali di accesso ai dati presenti nel sito WordPress. Uno di questi “endpoint” (“users”) permette di individuare tutti i nomi di login di tutti gli utenti del sito WordPress (amministratori e non).Rischio
Come nel punto precedente, avere a disposizione il nome di login dell’utente amministratore facilita l’individuazione della combinazione delle credenziali d’accesso utente/password.3) Indirizzo predefinito pagina login
In un’installazione di default, l’indirizzo della pagina di login è nome_sito/wp-login.phpRischio
Come abbiamo visto sopra, individuare il nome di login dell’utente amministratore è piuttosto semplice. Se in più, viene lasciato inalterato l’indirizzo della pagina di login, per individuare la password dell’utente amministratore del sito, è sufficiente lanciare uno script automatizzato che andrà a testare un’infinità di possibili password fino ad individuarla! (attacco cosiddetto di “forza bruta”) Per darvi un’idea della velocità con cui può essere individuata una password semplice, potete visualizzare questo video:4) Interfaccia XML RPC
L’interfaccia XML RPC, offre delle funzionalità simili a quelle dell’interfaccia Rest API, e permette anch’essa di interagire da remoto a livello programmatico con un sito WordPress.Rischio
Un’interfaccia XML RPC attiva, permette di eseguire degli attacchi di tentativi di individuazioni della password di un utente del sito, tramite l’utilizzo di script automatizzati.5) Numero versione WordPress
In un’installazione di default, il numero della versione di WordPress può essere facilmente individuata guardando il sorgente della pagina, nella sezione dei fogli di stili:Rischio
Conoscendo il numero della versione di WordPress installata, si può subito verificare sui siti specializzati, quali vulnerabilità sono presenti nella versione installata, soprattutto se la versione installata non è aggiornata all’ultima versione disponibile, e sfruttarle per cercare di manomettere il sito.6) Nome predefinito cartella wp-content
Il nome predefinito della cartella dove vengono installati plugin e temi è “wp-content”.Rischio
Gli utenti malintenzionati utilizzano degli script automatici, chiamati “bot” o “botnet” (nel caso di una rete di “bot”), che scandagliano Internet alla ricerca di siti WordPress che abbiano installati dei plugin o temi vulnerabili da sfruttare. Lasciando inalterato il nome predefinito della cartella wp-content, si facilita il lavoro dei bot in quanto la ricerca dei plugin e temi viene eseguita utilizzando il nome di default della cartella.7) Gestione password
Le funzionalità disponibili in WordPress per la gestione delle password è molto limitata. Oltre alla verifica della robustezza della password in fase di creazione di un nuovo utente o durante la modifica della password, non ci sono altre misure di protezione per incrementare la sicurezza del sistema.Rischio
Oltre all’utilizzo di password forti (minimo 12 caratteri e combinazione di maiuscole, minuscole, numeri e simboli) una corretta implementazione delle password utenti, deve anche prevedere un’autenticazione a 2 fattori e un cambio regolare delle password (password a scadenza), funzionalità di cui WordPress non dispone in modo nativo. Per approfondimenti: “Guida per creare e gestire password a prova di hacker“.8) Hash delle password
L’algoritmo di hashing utilizzato da WordPress (MD5) per crittografare le password, non viene più considerato sicuro visto che già nel 2004 erano state trovate delle vulnerabilità su questo tipo di algoritmo.Rischio
Entrare in possesso di una copia del database di un sito WordPress, e quindi degli hash delle password utenti, è diventato molto più facile che in passato grazie all’utilizzo anche di semplici strumenti come i motori di ricerca. Per approfondimenti: “Quanto è sicuro l’algoritmo delle password di WordPress?“.9) Cambio Salts & Keys
Le salts & keys sono delle sequenze di caratteri casuali salvate all’interno del file wp-config.php e che vengono usate da WordPress per impostare le password e i cookies utilizzati dal sistema. In un’installazione di default, le salts & keys vengono create al momento dell’installazione e non vengono più aggiornate.Rischio
Avendo a disposizione le salts & keys del vostro file di configurazione, un utente malintenzionato potrebbe creare un cookie che gli permetterebbe di accedere al vostro sito con diritti di amministratore. Per approfondimenti potete leggere il mio articolo “Salt, keys e cookies per WordPress“.10) Rilevamento modifiche file del sito
WordPress non dispone in modo nativo di un sistema di rilevamento delle modifiche dei file dell’installazione.Rischio
In un’ottica di sicurezza, è fondamentale disporre di un sistema di rilevamento in tempo reale di eventuali modifiche non desiderate dei file del sito, abbinato ad un sistema di notifica via email o altri mezzi (SMS o altro).11) Aggiornamento temi e plugin
Gli aggiornamenti dei temi e dei plugin vengono segnalati da WordPress nel pannello di controllo, sia nella sezione “Aggiornamenti” che nelle sezioni “Plugins” e “Temi”. Il problema però è che queste segnalazioni sono visibili solo se si accede al pannello di controllo, non c’è un sistema di notifica via email o tramite altri mezzi (SMS o altro). Inoltre WordPress non dispone di un sistema di segnalazioni di vulnerabilità dei temi o dei plugin.Rischio
L’aggiornamento dei temi e plugin è un’operazione di fondamentale importanza per proteggere il proprio sito WordPress da rischi di manomissioni. Secondo le statistiche rilasciate dal sito di riferimento WPScan Vulnerability Database (wpvulndb.com) il principale vettore di manomissione dei siti WordPress sono le vulnerabilità dei plugin.12) Web Application Firewall (WAF)
WordPress non dispone in modo nativo di un firewall applicativo. Tale firewall permette di bloccare una serie di tentativi di manomissione di un sito WordPress, dalle minacce di tipo “SQL injection” ai famigerati attacchi di “Cross-scripting“.Rischio
Gli attacchi di Cross-scripting e SQL injection, sono tra gli attacchi più pericolosi per un sito WordPress. L’unico modo per tutelarsi è implementare un firewall applicativo Web le cui regole, vanno aggiornate regolarmente per fare fronte alle nuove minacce.Conclusioni
Come abbiamo visto, la sicurezza di un sito WordPress appena installato è piuttosto bassa (75% circa). Per poter raggiungere alti livelli di sicurezza, è necessario eseguire una blindatura del sistema (sia a livello di sito che di server di hosting) e soprattutto implementare un servizio di monitoraggio h24, tarato sulla criticità del sito. Più il sito sarà mission-critical (si pensi ad un sito di eCommerce molto trafficato) più la sicurezza dovrà essere elevata.Tabella riassuntiva
Sicurezza | Rischio | |
---|---|---|
WP appena installato | 75% | 50% |
WP messo in sicurezza | 85% | 25% |
WP monitorato | 95% | 10% |
Analisi vulnerabilità
Trova le vulnerabilità presenti nel tuo sito, prima che vengano trovate dagli hacker!