TECHԑ PRIMO PIANO

Cyber-attacchi: SQL injection, cos’è e come difendersi

Negli ultimi anni, i discorsi di innovazione informatica vanno di pari passo con le sfide legate alla sicurezza. Poiché la maggior parte dei servizi ai quali gli utenti hanno di accedere vengono via via digitalizzati, è importante dare il giusto peso alla loro protezione.

Questa serie di articoli e video si prefiggono come principale obiettivo quello di sensibilizzare i lettori verso le sfide presenti nel mondo dell’informatica, in maniera tale da poter comprendere meglio quale sia il modo corretto in cui i dati andrebbero gestiti, condivisi e protetti.

Ad occuparsi della rubrica sarà Mauro Verderosa, esperto di sicurezza informatica e Ceo di ‘Psynd‘, società svizzera con sede a Ginevra specializzata in IAM e nel controllo degli accessi. Inoltre Verderosa è formatore ufficiale per (ISC)², l’organizzazione più importante per quanto riguarda le certificazioni di sicurezza informatica. Trai più importanti corsi organizzati spicca quello per l’ottenimento delle certificazioni CISSP, certificazione leader nel campo della sicurezza informatica, e CCSP, la certificazione più importante per quanto riguarda la sicurezza nel cloud.

Nel primo video verrà mostrato uno degli attacchi informatici più popolari su Internet: la SQL Injection.

SQL Injection

Questo tipo di attacco è stato reso molto popolare dal fatto che oggi abbiamo centinaia di migliaia di siti web, ed ognuno di questi portali potrebbe addirittura essere composto da migliaia di pagine (si pensi ad esempio un quotidiano). Gli amministratori di sistema e gli sviluppatori sono costretti a privilegiare una pubblicazione rapida dei contenuti invece di badare ad una loro implementazione corretta ed immune da attacchi informatici.

Questo attacco viene solitamente eseguito quando l’attaccante si trova di fronte ad un sito web che presenta uno o più formulari, ovvero quelle finestrelle dove è possibile inserire il nome utente (da qui in poi chiamato username) e la password per poter accedere ai dati del nostro conto o ad informazioni protette dal portale web.

SQL injection
Esempio di formulario

Il database, che è il punto dove vengono realmente raggruppati e gestiti i dati, tra i quali le informazioni confidenziali, non è mai direttamente esposto su Internet, ma i suoi dati vengono richiamati dal portale web il quale crea contenuti dinamici che vengono elaborati e resi disponibili all’utente sottoforma delle classiche pagine web.

La comunicazione tra il sito web ed il database viene effettuata attraverso l’uso di istruzioni di tipo SQL, Structured Query Language (letteralmente: linguaggio con interrogazioni strutturate)

SQL injection

L’obiettivo dell’attaccante è quello di bypassare i controlli di sicurezza imposti dal sito web e di impadronirsi dei dati protetti all’interno del database. Per fare ciò avrà bisogno di sfruttare i punti cardine del sito, dove l’utente solitamente inserisce i dati, mentre al contrario l’attaccante cercherà di inserire linee di codice malevole, facendole passare per un contenuto legale.

Immaginando che l’attaccante non abbia una conoscenza pregressa del sistema o degli utenti del sito (anche se questo notoriamente è un caso irreale), il suo primo obiettivo sarà innanzitutto quello di poter ricavare la lista degli username esistenti.

Per fare questo comincerà con l’inserire nel campo username (e poi in quello password) delle linee di codice che altereranno malevolmente la logica utilizzata dal sistema per richiedere specifiche informazioni al database.

SQL injection

Il risultato, sarà quindi quello di ingannare il database per fargli inviare, suo malgrado, delle informazioni che sarebbero dovute restare confidenziali. Questo attacco riuscirà quindi a bypassare i controlli di sicurezza e a fornire all’attaccante i contenuti protetti.

Manipolando la logica con la quale il portale web interrogherà il database, il primo passo sarà quello di far comparire sulla pagina web, sotto forma di errore, la lista degli utenti registrati sul sito.

Utilizzando una procedura analoga, l’attaccante elaborerà la lista degli utenti estratti per poter calcolare quale siano le password associate a questi conti. Il risultato sarà quello di ottenere una tabella che conterrà da un lato tutti gli username e dall’altro tutte le password.

All’attaccante non resterà altro da fare se non quello di scegliere una combinazione username/password dai suoi risultati, ed impersonare la vittima utilizzando le sue credenziali.

È da capire, che questo accesso malevolo potrà fornire all’attaccante molte informazioni personali tra le quali (e non limitate a..): nomi, cognomi, indirizzi email, numeri di telefono, indirizzi di casa, codici fiscali e numeri di carte di credito. Questi dati potranno variare sulla base del sistema che verrà attaccato.

Come premesso, questo attacco è reso possibile da una scarsa qualità di sviluppo del sito ed è molto più comune di quanto non si pensi.

Anche se descritto in maniera semplificata, questo tipo di attacco è quello che viene eseguito nei vari casi di violazione dei dati ai quali molte multinazionali (e governi) sono state vittime nel corso degli ultimi anni.

Purtroppo per questo tipo di attacchi gli utenti giocano solo un ruolo passivo, non esiste un reale meccanismo per potersi progettare. Quel che servirebbe, dal lato dei gestori del sito web, sarebbe quello di implementare, come politica aziendale, una strategia che includa la sicurezza in ogni tappa del processo di sviluppo.

Mauro Verderosa

Mauro Verderosa

Esperto di sicurezza informatica e certificato CISSP. Specializzato nel controllo degli accessi e nell'Identity and Access Management (IAM). CEO dell'azienda di sicurezza svizzera PSYND, dell'associazione Swiss-CyberSecurity e della conferenza Zero-Day. Lavora ogni giorno per alcune delle più importanti istituzioni svizzere ed europee nella definizione di strategie di sicurezza.

Articoli Correlati