SQL injection attacks. Facili da imparare, seplici e devastanti.

What is SQL injection?

Se avete familiarità con lo sviluppo di applicazioni web, probabilmente avete sentito parlare di attacchi di tipo SQL injection.  Sono tra le forme di attacco informatico più comunemente usate, soprattutto perché sono così semplici da imparare ed eseguire. Non fatevi ingannare perchè queste caratteristiche  non li rende meno pericolosi. Possono essere devastanti, e molte aziende sono cadute nell’errore di sottovalutarli.

SQL injection attacks
SQL injection attacks

SQL injection attacks

Il motivo per cui gli attacchi SQL injection possono rivelarsi così temibili è che gran parte delle procedure web è costruita su database SQL, compresi quelli forniti da Microsoft, Oracle e SAP. Questo fa di SQL injection uno delle metodiche di attacco più versatili nell’arsenale di un hacker, e di solito è tra i primi strumenti utilizzati come parte di un tentativo di violazione.

Un attacco SQL injection si verifica quando una terza parte è in grado di utilizzare i comandi SQL per interferire con i database di back-end con metodi che non dovrebbero esser permessi. Questo è generalmente il risultato di siti web che incorporano direttamente il testo inserito dall’utente in una query SQL (come una ricerca o semplicemente un login con username e password) e quindi eseguono tale query “contro” un database.

Funziona in un modo molto simile allo scripting cross-site, un altro stile di attacco di “iniezione” che coinvolge gli hacker che inseriscono script dannosi nei moduli web per indirizzare i browser degli utenti.

Uno dei risultati più comuni di un attacco SQL injection è il furto di dati utente. Le credenziali di accesso, gli indirizzi e-mail o le informazioni personali possono essere tutti venduti sul mercato nero o sfruttati per ulteriori attacchi informatici. L’attacco può anche essere utilizzato per mettere offline le applicazioni cancellando tabelle dal database o per aggiungere nuove informazioni al database.



 

Come difendersi.

Come tutti i linguaggi di programmazione, SQL si basa sull’uso di alcuni caratteri e strutture di formattazione per designare le funzioni. SQL injection sfrutta questa caratteristica utilizzando campi di testo per introdurre questi elementi in altre query benigne, ma può essere contrastata “sanificando” le sezioni di input dell’utente attraverso un sito web terzo o un’applicazione.

L’aggiunta di un livello di astrazione consente di eliminare i caratteri che vengono utilizzati nelle query SQL, ma non qualunque sia il campo di input. Il punto e virgola, per esempio, è usato nelle query SQL, ma non compare nei nomi e non è permesso negli indirizzi email, quindi chiunque lo inserisca in un campo di testo progettato per raccogliere nomi o indirizzi email sta quasi certamente tentando un attacco SQL injection.



 

Storia moderna.

Gli SQL injection attacks non devono essere sottovalutati, è stato il metodo alla base della gigantesca violazione TalkTalk del 2015, che ha portato al furto di oltre 150.000 informazioni personali dei clienti e a una multa di 400.000 sterline per l’azienda. Nel 2012, un gruppo ha anche utilizzato attacchi SQL injection per rubare 450.000 dati di login degli utenti Yahoo, in una delle numerose violazioni che avrebbero colpito la società web negli anni successivi.

Secondo un recente rapporto della società di sicurezza web Akamai, gli attacchi SQL injection hanno rappresentato oltre il 65% degli attacchi basati sul web tra novembre 2017 e marzo 2019, con gli Stati Uniti e il Regno Unito in cima alle classifiche come i paesi più frequentemente bersagliati.