PHP-Nuke, il noto sistema di pubblicazione di siti Web, è di nuovo nell’occhio del ciclone per la scarsa attenzione dedicata alla sicurezza. Un programmatore spagnolo, editore della rivista elettronica 7a69, ha pubblicato lo scorso 13 maggio sulla mailing list BugTraq, indiscussa fonte di problemi di sicurezza, l’ennesimo errore di programmazione scovato nel codice della versione 6.5.
La vulnerabilità permetterebbe a chiunque abbia un po’ di pratica di sintassi SQL di visualizzare i dati presenti nel database di un sito gestito con PHP-Nuke, inclusi non solo gli articoli ma tutti i nomi degli utenti e le password ad essi associate.
La vulnerabiltà sfrutta una serie di noti errori di programmazione da sfruttare attraverso la tecnica della ‘SQL injection’. Per mezzo di questa tecnica è possibile inviare all’applicazione che gestisce la comunicazione tra sito web e database alcuni comandi non previsti dallo sviluppatore. Comandi che possono essere sfruttati a fini distruttivi e non leciti.
Le tecniche per evitare la ‘SQL injection’ fanno parte delle basi della programmazione e ciò rende ancora più clamorosa quest’ultima falla.
PHP-Nuke non è nuovo a problemi di sicurezza che ne potrebbero compromettere completamente l’utilizzo, portando a perdita di dati e manomissioni dei contenuti. Una ricerca sul database degli advisories di SecurityFocus visualizza più di quaranta vulnerabilità a partire dal 2001. Molti di più sono le segnalazioni e gli attacchi testimoniati dai Forum e dalle Community che si occupano dell’argomento.
Lo stesso Albert Puigsech Galicia, lo sviluppatore che ha diffuso quest’ultima vulnerabilità, in chiusura della sua segnalazione ha dichiarato di essere «sorpreso dell’utilizzo di PHP-Nuke. Non capisco – continua – come si possa utilizzare un software con un tale passato in fatto di sicurezza. Nell’ultimo mese sono state scoperte molte vulnerabilità e molte sono ancora da scoprire». L’arringa termina con un «consiglio per gli utenti di PHP-Nuke: cambiate!»
A ciò si aggiunga che la fulminea diffusione del progetto e il suo essere open source ha portato alla nascita di moltissimi siti di supporto per PHP-Nuke. In molti casi ogni singola community può mettere a punto le proprie correzioni dei bug, mettendo a dura prova il sistema centrale di gestione degli aggiornamenti.
Lo stesso Francisco Burzi, il creatore di PHP-Nuke e l’unico ‘depositario’ delle modifiche e dei rilasci ufficiali, è stato spesso accusato di non dare troppo conto ai problemi di sicurezza segnalati dagli utenti e di non accettare tempestivamente le correzioni.
Lo scorso marzo, ad esempio, una vulnerabilità diffusa da uno sviluppatore francese aveva provocato decine di ‘defacement’ (sostituzioni di Homepage) in tutto il Web. Le pagine di molti siti basati su PHP-Nuke erano state sostituite con delle pagine di protesta per la guerra in IRAQ. Il divulgatore delle tecniche di defacement le ha rese pubbliche solo dopo aver avvisato Burzi e non aver ricevuto risposta.
Soprattutto per ciò che si è detto è prevedibile un cambiamento nelle modalità di sviluppo di PHP-Nuke. Lo stesso Burzi, «stanco» di tutta la situazione, ha proposto alcuni cambiamenti. Dal riscrivere completamente e da zero il codice di PHP-Nuke, a criptare il codice sorgente per non facilitare il lavoro degli hacker (una contraddizione del modello open source). Tutte soluzioni da valutare e mettere in pratica nei prossimi mesi.
Un dato è comunque acquisito: PHP-Nuke è un ‘software’ pericoloso. L’obbiettiva semplicità di installazione e di pubblicazione non può pareggiare la presenza di numerosi, continui e profondi problemi di sicurezza, laddove questa sta diventando uno dei pilastri della Società dell’Informazione.
Ma c’è qualcosa di più: PHP-Nuke viene anche utilizzato da molti Webmaster per vendere siti e layout preconfezionati ai propri clienti; come dare una bomba in mano ad un bambino. Una soluzione di prima mano c’è: basta assoldare qualche conoscitore esperto di PHP-Nuke per garantirsi un minimo di sicurezza e di intervento in caso di disastro. La sicurezza che diventa, appunto, un optional.