Che cos’è SQL Injection?

I 5 esempi principali che devi conoscere

SQL injection

Per proteggerti dagli hacker, dovresti condividere i tuoi dati personali solamente su siti web affidabili con moduli crittografati. Tuttavia, se i proprietari di tali siti web non adottano misure per proteggere il loro database, le tue informazioni personali potrebbero comunque essere a rischio: grazie a una semplice SQL injection di una manciata di righe di codice, gli hacker possono compromettere qualsiasi sito web affidabile: i tuoi dati potrebbero così finire nelle mani sbagliate.

Sommario: La SQL injection è l’inserimento di codice malevolo in siti web e applicazioni basate su web con l’obiettivo di compromettere il sito web target e raccogliere dati utente. Come suggerisce il nome, gli attacchi di SQL injection prendono di mira il database Structured Query Language (SQL), cioè la “spina dorsale” di un sito web. Continua a leggere per saperne di più sui cinque principali tipi di attacchi SQL injection.

SQL Injection

Che cos’è la SQL injection?

La SQL injection consiste nell’inserimento di codice malevolo in applicazioni web-based con l’obiettivo di attaccare siti web e/o raccogliere dati utente. Gli hacker eseguono attacchi SQL injection per una serie di motivi: oltre alle violazioni dei dati, possono utilizzare questa tecnica per fornire informazioni false nel database dell’applicazione, rimuovere informazioni importanti o negare l’accesso al database ai proprietari e ai creatori dell’app. A questo scopo, devono trovare e sfruttare alcune vulnerabilità di sicurezza nel software dell’app presa di mira.

SQL (acronimo di Structured Query Language) è un linguaggio ideato per inserire dati e modificare i contenuti dei database. I siti web e le applicazioni web-based sfruttano i database per archiviare tutti i loro dati e fornire i servizi agli utenti finali. SQL svolge un ruolo cruciale in questo processo perché consente agli utenti di individuare il contenuto specifico all’interno del database: ad esempio, se cerchi un determinato prodotto in un negozio online, il termine di ricerca e le tue preferenze (dimensioni, peso, ecc.) saranno formattati in SQL.

Come suggerisce lo stesso nome, gli attacchi di SQL injection prendono di mira i database SQL. L’hacker responsabile dell’attacco sfrutta la mancanza di filtri di convalida dell’input per i cosiddetti caratteri di escape (ad esempio il backslash) per iniettare il proprio codice nel sistema. A seconda dei loro obiettivi, gli hacker possono impostare il codice al fine di distruggere una parte del database oppure ottenere l’accesso ai dati dell’utente finale ogni volta che quest’ultimo inserisce una query di ricerca. È possibile sfruttare le SQL injection anche per diffondere malware attraverso siti web infetti.

Sebbene siano facili da prevenire, gli attacchi di SQL injection rappresentano una grave minaccia, che ha colpito aziende e media importanti, così come i loro utenti. Gli esperti stimano che al giorno d’oggi più della metà di tutti gli attacchi informatici fanno uso di tecniche di SQL injection, prendendo perlopiù di mira i blog in WordPress e i siti di e-commerce. Secondo le statistiche del 2014, un singolo attacco costa alle imprese circa 200.000 $.

Quali sono i tipi di attacchi SQL injection?

È possibile suddividere gli attacchi di SQL injection in cinque tipi principali, in base al metodo utilizzato.

1. SQL injection basata su UNION

La SQL injection basata su UNION è un tipo di attacco di in-band SQL injection che utilizza l’operatore SQL UNION per estrarre con facilità le informazioni richieste dal database preso di mira. L’operatore UNION consente all’utente di elaborare dati contemporaneamente da più tabelle, a patto che contengano lo stesso numero di colonne e tipi di dati identici. Gli hacker possono raccogliere le informazioni di cui hanno bisogno inserendo un’istruzione SELECT, ma affinché l’attacco vada a buon fine, devono conoscere il nome esatto della tabella, il numero di colonne e il tipo di dati.

2. SQL injection basata sugli errori

La SQL injection basata sugli errori è un altro tipo di attacco di in-band SQL injection: si tratta di una tecnica che consente agli hacker di sfruttare i messaggi di errore restituiti da un server per ottenere informazioni sulla struttura del server presi di mira. Gli hacker inseriscono intenzionalmente query non valide per attivare i messaggi di errore; tuttavia, questi messaggi contengono spesso i risultati della query completa o informazioni su come migliorare la query per ottenere i risultati desiderati: entrambi gli elementi possono aiutare gli hacker a portare a termine l’attacco.

3. Blind SQL injection basata sul tempo

La blind SQL injection basata sul tempo è una tecnica che prevede l’invio di una query SQL temporizzata al database per valutarne il risultato. La query in questione forzerà il database ad attendere prima di restituire un risultato, sia esso TRUE o FALSE. In base al tempo di risposta e alla risposta stessa, un hacker può valutare se l’invio del payload è andato a buon fine. Lo svantaggio principale di questo tipo di SQL injection è la durata, poiché l’hacker deve enumerare il database un carattere alla volta.

4. Blind SQL injection basata su valori booleani

La blind SQL injection basata su valori booleani è una tecnica di iniezione inferenziale molto simile alla blind SQL injection basata sul tempo. In particolare, gli hacker invieranno una query SQL alla volta nel tentativo di enumerare il database. In base alla risposta ricevuta, valuteranno se l’invio del payload è andato a buon fine. Tuttavia, anziché cronometrare le loro query, combineranno espressioni TRUE e FALSE. Come nel caso della SQL injection basata sul tempo, questi attacchi possono essere molto lenti, specialmente quando un hacker ha come obiettivo un database di grandi dimensioni.

5. Out-of-Band SQL Injection

Out-of-band SQL injection è una tecnica utilizzata dagli hacker per generare richieste DNS e/o HTTP che potrebbero consegnare i dati direttamente a loro. A volte viene utilizzata come alternativa agli attacchi blind SQL injection basata sul tempo, solitamente quando i tempi di risposta del server sono lenti o quando è impossibile raccogliere dati attraverso lo stesso canale utilizzato per lanciare l’attacco. Gli attacchi out-of-band SQL injection sono rarissimi, in quanto il loro successo dipende da funzionalità che possono essere abilitate solo dall’amministratore del server.

Esempi di attacchi SQL injection

Negli ultimi due decenni, numerosi attacchi SQL injection hanno preso di mira siti web di grandi dimensioni, aziende e piattaforme di social network. Molti di questi attacchi sono sfociati in gravi violazioni dei dati. Tra gli esempi più rilevanti:

  • Nel 2008, due hacker di origine russa hanno utilizzato tecniche di SQL injection per attaccare Heartland Payment Systems, un (allora) importante fornitore di soluzioni per l’elaborazione dei pagamenti. Ritenuto all’epoca la maggiore violazione dei dati di carte di credito, l’attacco diede agli hacker l’accesso ai dati di oltre 150 milioni di carte di credito e costò alle aziende colpite più di 300 milioni di dollari. Nel 2018, i due hacker artefici dell’attacco furono condannati a più di 16 anni di carcere.
  • Nel 2016, un gruppo di hacker ha sfruttato le vulnerabilità di vBulletin, il popolare software di gestione di forum online, per colpire 11 bacheche a tema gioco, la maggior parte in russo. Durante l’attacco, gli hacker sono riusciti a rubare i dati di accesso di oltre 27 milioni di account.
  • Sempre nel 2016, gli hacker hanno utilizzato metodi di SQL injection per lanciare un attacco informatico contro la Banca Nazionale del Qatar. Gli hacker sono riusciti a rubare più di 1,4 GB di dati, che sono stati subito divulgati pubblicamente. Questi dati contenevano informazioni su conti bancari di migliaia di clienti, tra cui membri della famiglia al potere nel Paese, funzionari dell’intelligence, capi religiosi controversi, nonché diversi cittadini britannici, francesi e statunitensi che erano stati etichettati come spie nel database della banca.

Come prevenire attacchi SQL injection

È facile prevenire gli attacchi di SQL injection: è sufficiente svolgere una corretta manutenzione del sito web. Alcune attività importanti sono il monitoraggio costante delle istruzioni SQL di tutte le app connesse al database, l’installazione regolare degli aggiornamenti e delle patch del database, nonché l’acquisto di software di sicurezza informatica affidabili per proteggere il database.

Poiché questi attacchi si rivolgono ai siti web che utilizzano SQL dinamico, quando crei le tue query dovresti cercare di ridurre al minimo la necessità di input da parte dell’utente. Se possibile, offri istruzioni per l’inserimento agli utenti e un elenco di opzioni tra cui scegliere piuttosto che dare loro la possibilità di inserire una query. È inoltre importante utilizzare la convalida dell’input per evitare problemi con i caratteri di escape. Infine, abilita il filtro dei dati in base al contesto: ad esempio, per l’inserimento di numeri telefonici dovresti consentire soltanto le cifre.

In rari casi, gli hacker possono anche utilizzare attacchi SQL injection per compromettere con software malevoli siti web altrimenti attendibili. Non appena visiti un sito web infetto, inizierà il download del malware senza il tuo consenso. Una volta installato, il malware potrebbe consentire agli hacker di accedere alla tua cronologia di navigazione, alle tue informazioni personali e perfino alle sequenze di tasti che digiti. Per evitare che ciò accada, utilizza i migliori software antivirus, che manterranno al sicuro il tuo computer e i tuoi dati dai virus, dai malware e da tutte le altre potenziali minacce.

Fonti (in inglese)

 

    Sei protetto?

    Gli hacker possono utilizzare siti web compromessi per diffondere software malevoli, quindi non dare per scontata la tua sicurezza online.