5. Introduzione – un pò di storia
Nel 1998 Rain Forest Puppy pubblica su Phrack 54
un articolo dal titolo “NT Web Technology Vulnerabilities”.
Anche se il termine SQL Injection non viene menzionato
viene presentato alla comunità uno degli attacchi più
insidiosi che le applicazioni web abbiano mai incontrato.
Nel settembre del 2005 David Litchfield publica un paper
dal titolo “Datamining with SQL Injection and Inference”
basato sulla presentazione fatta al Blackhat europe.
É la nascita di una nuova metodologia di SQL Injection
basata su tecniche di inferenza.
Altro duro colpo per la sicurezza delle applicazioni web.
OWASP 5
8. SQL Injection e metodi di Inferenza
Con il termine Inferenza si intende una conclusione tratta da un
insieme di fatti o circostanze.
In pratica ciò che viene fatto è eseguire alcuni test di verità sui parametri vulnerabili
e in base al risultato dedurre il valore del parametro.
I test effettuati sono di tipo binario (vero/falso).
Per poter eseguire con successo l'attacco è dunque necessario saper distinguere
il concetto di vero da quello di falso.
Utile in quei casi in cui non possiamo visualizzare direttamente il risultato
della query oppure quando gli errori riportati dal DB server vengono
mascherati (Blind Sql Injection).
OWASP 8
18. Rendersi immuni all'SQL Injection
prepared statements
• Permettono di realizzare query più sicure (separazione tra logica e dati)
• Dotate di prestazioni migliori
• Presenti in PHP 5 (e nella maggior parte dei linguaggi di sviluppo web)
Funzionamento
• Si crea un modello di query e lo si invia al DB server (ad esempio MySql)
• Il server ne controlla la validità, se la query è ben formata la memorizza in
un buffer e ritorna un handle che verrà utilizzato per riferirsi alla query.
• Si effettua il collegamento delle variabili di input
• Recupero dei dati
OWASP 18
22. Conclusioni
L'Sql Injection è un attacco molto potente e soprattutto
facile da mettere in atto.
Le tecniche di inferenza permettono di ricavare non solo
il valore dei campi, ma di effettuare anche il dump di file
presenti sul filesystem.
É un attacco che può essere facilmente automatizzato.
Spesso si ricorre ad una validazione dell'input di tipo
“aperto” (ovvero se non specificatamente negato lo
permetto). Esistono comunque metodi di protezione più
semplici e più performati come i prepared statement.
OWASP 22