Proteggere WordPress dagli 0day, la sicurezza prima di tutto
NOTA:
Adottare una soluzione di questo tipo potrebbe avere effetti sull’utilizzo del blog da parte dei vostri utenti. Ci sono infatti dei file che vengono richiamati in pagine accessibili normalmente dagli utenti ( come quella di registrazione ) che necessitano di alcuni fogli di stile CSS dalla cartella wp-admin. Tali file non saranno disponibili ai vostri utenti dato che non hanno la password per entrare in wp-admin causando possibili fastidi. Sto provando a cercare soluzioni che siano meno invasive ma non sarà facile
Ho appena visionato una advisory pubblicata da Core Security sulla mailing list Full Disclosure, una delle più importanti mailing list nel mondo della sicurezza informatica. L’advisory in oggetto riguarda alcune vulnerabilità di WordPress 2.8, l’attuale versione stabile che sta per essere sostituita dalla nuova 2.8.1 ( la quale dovrebbe anche risolvere i problemi rilevati da Core Security ).

Il problema più grosso riguarda la possibilità per un utente senza privilegi di visualizzare la configurazione dei plugin e di modificare la stessa configurazione con l’effetto collaterale che se il plugin è affetto da XSS ( e spesso, almeno dal lato amministrativo lo sono ), sarà possibile iniettare codice Javascript che una volta eseguito da un amministratore potrà andare a modificare il codice PHP del blog ( ad esempio sfruttando le funzioni interne di editing dei temi ) con l’effetto finale di un’esecuzione di comandi da remoto. Il tutto deriva da un mancato controllo dei privilegi degli utenti in alcune situazioni ( vi rimando all’advisory per i dettagli tecnici ).
Ora, come possiamo fare per proteggerci da questo tipo di vulnerabilità che affliggono il pannello di amministrazione prima che venga rilasciata una patch ufficiale? Alcune vulnerabilità poi non vengono nemmeno riportate agli sviluppatori e vengono conservate da chi le scopre per poter poi essere sfruttate per colpire qualche ignaro blogger; i cosiddetti 0day.
Un consiglio è quello di impedire l’accesso da remoto alla cartella wp-admin a chiunque non sia amministratore. In questo modo nessun utente potrà effettuare richieste HTTP ai file contenuti in tale cartella rendendo impossibile sfruttare vulnerabilità che partono appunto da questi file. Per proteggere questa cartella utilizzeremo una funzione del web server Apache. Ecco cosa dovete fare.
Innanzitutto assicuratevi di conoscere il percorso assoluto alla vostra cartella wp-admin. Con percorso assoluto intendo il percorso fisico all’interno del web-server, qualcosa tipo /home/username/mioblog.it/wp-admin, in ambiente Linux. Se non lo conoscete è semplicissimo scoprirlo. Create un file PHP con questo contenuto
Dategli un nome tipo path.php e con il vostro client FTP caricatelo nella cartella wp-admin del vostro blog. A questo punto con il vostro browser fate una richiesta a questo nuovo file ( digitate nella barra degli indirizzi http://www.mioblog.it/wp-admin/path.php ) e vi comparirà il percorso. Segnatevelo ed eliminate il file appena caricato.
Ora aprite questa pagina. Nel campo “Auth Area” inserite qualcosa come “Admin” mentre nell’altro campo inserite il percorso trovato prima con aggiunta alla fine la stringa “.htpasswd” ( senza virgolette mi raccomando ). Risulterà, seguendo il nostro esempio di prima, /home/username/mioblog.it/wp-admin/.htpasswd. Cliccate ora sul pulsante “Create .htaccess file”, copiate il contenuto della casella di testo che comparirà e salvatelo all’interno di un nuovo file di testo a cui darete il nome “.htaccess”. Il suo contenuto sarà qualcosa di questo tipo:
AuthType Basic AuthName "Admin Area" AuthUserFile /home/username/mioblog.it/wp-admin/.htpasswd Require valid-user
Andate ora a questa pagina dove creeremo il file con la password criptata per l’accesso alla cartella wp-admin. Compilate il campo username e password avendo cura possibilmente di non usare la stessa password del vostro utente amministratore in WordPress. Cliccate su “Create .htpasswd file” e salvate il contenuto della casella di testo in un nuovo file chiamato appunto “.htpasswd”. Caricate anche questo file nella cartella wp-admin e avrete finito.
Qualora non vogliate più proteggere la cartella vi basterà rimuovere i due file che avete caricato e tutto tornerà allo stato originale.
Buon blogging a tutti!
Articoli correlati:
Comments (2)

te l’avevo detto……
Diciamo che c’è un compromesso