openWAF è un firewall applicativo distribuito per il web.
Il mondo dei firewall per le applicazioni è ancora da esplorare, ma le recenti notizie di cronaca invitano a prendere rapidamente in esame questo aspetto della sicurezza.
Normalmente i firewall operano a livello di protocollo di rete e fanno pochissime incursioni nei livelli applicativi.
Inoltre, con una curiosa allegoria del teorema di Gödel, i firewall migliori sono quelli posti all’esterno di ciò che si vuole proteggere.
Possiamo, infatti, scrivere l’applicazione web nel modo più sicuro che ci viene in mente, sanificando ogni input, ma una distrazione o un giro imprevisto della procedura sono sempre in agguato.
Un firewall a livello HTTP serve proprio ad applicare delle regole di filtro agli URL per bloccarli prima che questi raggiungano l’applicativo vittima dell’attacco.
Ho installato openWAF sul server che ospita uno dei miei domini. Se provate a chiedere al server un URL tipo http://luigi.rosa.name/index.html?id=’SELECT pippo FROM pluto’ il client si vede tornare un errore 403 generato dal modulo di openWAF. La conferma viene dal log di openWAF (a.b.c.d è l’indirizzo IP del client):
"20110528-132444","unknown","luigi.rosa.name","a.b.c.d","GET","/index.html?id='SELECT%2520pippo%2520FROM%2520pluto'","HTTP/1.1","[2/0]","DENY 403","PROTECTION","REQUEST","BaselineProtectionHandler","patterns","select statement (id 15)","invalid combination args id='SELECT pippo FROM pluto' match pattern sql select statement iterations 0","HIGH"
La riga corrispondente dell’access log (non dell’error log!) di Apache è:
a.b.c.d - - [28/May/2011:13:52:08 +0200] "GET /index.html?id='SELECT%20pippo%20FROM%20pluto' HTTP/1.1" 403 292 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57 Safari/534.24"
openWAF ha una struttura client-server che permette di separare i server su cui girano i filtri dai server protetti, per migliorare scalabilità ed efficienza del sistema.
La documentazione di openWAF è molto ben fatta ed è disponibile un forum di supporto.
Per ora il programma è distribuito solamente in binario, i sorgenti saranno resi disponibili in seguito. Purtroppo l’impossibilità di capire, attraverso l’ispezione dei sorgenti, come viene effettuato il filtro lascia dei dubbi se il filtro medesimo sia aperto ad attacchi di qualche tipo. Per la cronaca, l’installazione della versione RPM si CentOS 5 non ha presentato alcun tipo di problema. (via drakpz)
Lascia un commento