Successivo

News

Da Microsoft armi affilate per battere gli attacchi al web

Michele Costabile | 4 Luglio 2008

Niente più scuse per chi non irrobustisce il proprio sito eliminando i pericoli di un attacco Sql injection, grazie a […]

Niente più scuse per chi non irrobustisce il proprio sito eliminando i pericoli di un attacco Sql injection, grazie a una batteria di strumenti di Microsoft che aiutano a bloccare gli attacchi e diagnosticare le debolezze.


Gli attacchi a un sito di tipo Sql injection consistono nel creare delle interrogazioni potenzialmente dannose sfruttando delle ingenuità  nel codice di un sito.
Facciamo un breve esempio, per esempio l’estrazione dei dati di un cliente dal database per presentarli in una form:

SqlDataAdapter myCommand = new SqlDataAdapter(
"SELECT * FROM clienti WHERE cliente_id = '" +
T1.Text + "'", myConnection);

T1.Text è l’input dell’utente, prelevato da una form di interrogazione, che dovrebbe contenere un codice cliente.
Se l’input dell’utente è 123, la query costruita è

SELECT * FROM clienti WHERE cliente_id = '123'

Supponiamo ora che l’input sia

'; DROP DATABASE ordini --

Il risultato della concatenazione di stringhe è

SELECT * FROM clienti WHERE cliente_id = ''; DROP DATABASE ordini --

Il punto e virgola indica l’inizio di una nuova istruzione e il — commenta tutto l’eventuale testo aggiunto in coda alla query, ad esempio clausole ORDER BY.
Il risultato dell’interrogazione è la cancellazione di un database, non certo quello che il programmatore si aspettava. Quello che abbiamo mostrato è lo hello world degli attacchi Sql, ci sono possibilità  molto più interessanti, come estrarre un elenco di carte di credito dagli archivi di un sito di commercio elettronico.
Difendersi da questo tipo di attacchi richiede un intervento attivo: bisogna controllare l’input dell’utente prima di utilizzarlo in una interrogazione. Purtroppo, la pigrizia e la mancanza di tempo fanno sì che spesso si lascino aperti dei varchi per non intervenire.
Microsoft risponde con tre risorse molto interessanti al bisogno di maggiore sicurezza. La prima è un filtro Isapi che blocca l’esecuzione di Url pericolose. Un filtro Isapi processa una Get e i suoi parametri prima ancora che l’elaborazione sia passata al codice Asp della pagina, quindi può intervenire globalmente senza richiedere nessuna modifica al codice a valle. La forma di intervento è radicale, ma la copertura è completa.
Naturalmente un intervento mirato è da preferire a una soluzione “a coperta”, ma occorre entrare nel codice delle pagine e esaminare criticamente le debolezze. Uno strumento pubblicato da Microsoft è proprio un analizzatore statico del codice che diagnostica un uso spericolato dell’input degli utenti, che crea falle si sicurezza.
Una utile pagina di documentazione raccoglie tutto il materiale possibile per comprendere a fondo il pericolo di questa tecnica di attacco e le possibilità  di difesa.
Consigliamo anche di seguire il blog del team Msdn Italia per mantenere l’attenzione sulla sicurezza e la tecnologia.