“SQL Injection is subset of the an unverified/unsanitized user input vulnerability, and the idea is to convince the application to run SQL code that was not intended. If the application is creating SQL strings naively on the fly and then running them, it’s straightforward to create some real surprises.”
Unixwiz.net
Neanche poche ore dopo la notizia di un attacco informatico alla piattaforma Rousseau del MoVimento 5 Stelle che già tutte le fonti originali sono off-line, compreso l’account Twitter @evaristegal0is, il sedicente scopritore della vulnerabilità #hack5stelle.
A quanto ho potuto ricostruire leggendo svariate fonti, @evaristegal0is ha scoperto una vulnerabilità del tipo SQL Injection sul nuovo portale di Rousseau, presentato solo pochi giorni fa da Davide Casaleggio, figlio di Gianroberto.
Oltre a questo, è stato evidenziato come limitare la lunghezza della password a soli 8 caratteri possa esporre ad attacchi di forza bruta e l’autore stesso, sempre a quanto risulta, usando John the Ripper (un noto software per attacchi brute force alle password) ha potuto craccare 136 password in 21 ore su un campione casuale di 2517: il 5,40% delle password analizzate.
Lasciando da parte le ripercussioni sotto il profilo meramente politico, da un punto di vista tecnico bisogna sottolineare come una (o più) potenziali vulnerabilità SQL Injection sia abbastanza diffusa in gran parte dei portali dinamici, ma anche facilmente evitabile.
Cos’è un attacco SQL Injection ?
Questo tipo di attacco consiste nel modificare una query SQL in modo che risponda in maniera diversa da come programmato, inserendo nel codice ulteriori parametri che modificano le condizioni della risposta.
La sfida è trovare un punto di accesso “valido” al DBMS, che può essere ad esempio un form o una pagina dinamica, ma anche un semplice cookie di sessione. Dipende soprattutto da come è stato costruito il sistema e da quanto lo sviluppatore ha posto attenzione alla “sanificazione” dei dati provenienti dal browser utente.
Una descrizione molto ben fatta di questo tipo di attacchi la trovate qui: SQL Injection Attacks by Example e anche qui: SQL Injection (SQLi)
Sembra complicato: come ha fatto a scoprire la vulnerabilità in così poco tempo ?
Diciamo che si, è abbastanza complicato. Un attacco di questo tipo richiede indubbiamente conoscenze non banali, tanto tempo a disposizione ma anche la fortuna di trovare la falla all’interno di un sistema così complesso come il portale Rousseau.
Tuttavia esistono già da tempo dei tools a disposizione soprattutto degli sviluppatori (nelle best-practice del webmaster c’è sempre l’analisi delle vulnerabilità, o pentesting, del sistema), come ad esempio sqlmap, “an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers” o la famosa BURP Suite, che permette di effettuare analisi approfondite delle vulnerabilità di un certo sito web. Strumenti, sia chiaro, non alla portata di tutti.
E il crack delle password ?
E’ facile ipotizzare che le password siano state memorizzate all’interno del database violato, in forma cifrata attraverso la consueta funzione PASSWORD(), che “Returns a hashed password string calculated from the cleartext password”. Disponendo di un buon vocabolario, come ad esempio quello relativo alle 10.000 password più usate al mondo, e con l’ausilio di uno strumento di attacco a forza bruta come, appunto, John the Ripper, è tutta questione di tempo e di fortuna…
Un attacco a forza bruta è un sistema che prova tutte le combinazioni possibili e le confronta con l’hash della password: se corrisponde, abbiamo trovato la password. E’ chiaro come, in questo tipo di attacchi, la lunghezza e l’imprevidibilità della parola chiave giochi un ruolo fondamentale.
#hack5stelle, e ora ?
Beh, il portale Rousseau non è il primo né sarà l’ultimo ad essere violato. Proprio qualche giorno fa a notizia di una pesante violazione ai danni del sistema informatico di Unicredit, con l’esposizione dei dati di oltre 400.000 clienti.
Certamente eventi di questo tipo fanno ancora più riflettere sulla necessità di lavorare con professionisti del settore e non improvvisarsi webmaster, soprattutto quando in ballo c’è ben più di un semplice defacement: come per Rousseau, la prevenzione è la migliore risposta agli attacchi.
Non resta che concludere ricordando ancora una volta le buone regole:
- usare password lunghe e non facilmente prevedibili (se il sistema permette 8 caratteri per le password, come Rousseau, usare una parola composta da numeri e simboli alfanumerici di 8 caratteri…);
- per ogni servizio/portale, usare una password unica: questo protegge gli altri account in caso di violazione della password stessa;
- cambiare la password almeno ogni 6 mesi;