Iniezioni SQL: come funzionano e come prevenirle

Lukas Grigas
Autore di contenuti sulla cybersicurezza
sql injection
  • Gli hacker possono prendere il controllo di un intero sito con poche stringhe di codice? Un'iniezione SQL può consentire ai criminali informatici di saccheggiare i tuoi database e rubare qualsiasi tipo di informazione, dalle credenziali amministrative ai dati delle carte di credito dei clienti.

Se un sito web o un'applicazione presentano punti deboli a livello di programmazione, un hacker può estrarre informazioni altamente riservate.

Cos'è un attacco di iniezione SQL e come si può prevenire?

Cos'è l'SQL?

L'SQL è un linguaggio di programmazione utilizzato principalmente per recuperare informazioni dai database online. È molto facile da usare: è infatti intuitivo e i comandi sono termini in inglese piuttosto semplici.

Ad esempio, immagina che un utente stia facendo acquisti online e digiti la parola "scarpe" nella barra di ricerca di un sito di e-commerce. Premendo il tasto di ricerca, nel dietro le quinte si avvia un semplice processo informatico.

Il sito web utilizza un sistema di gestione dei database (DBMS) che, a sua volta, esegue una qualche forma di SQL. Quando il cliente cerca "scarpe", viene creata una stringa di codice che utilizza quel linguaggio: si tratta della query SQL.

Questa contiene alcune indicazioni, come ad esempio dove cercare e cosa recuperare, e dovrebbe avere un aspetto del genere:

SELECT nome, descrizione FROM prodotti WHERE categoria = "scarpe"

Quando la query raggiunge il database, il sistema DBMS la legge e capisce che deve cercare nella tabella "prodotti". Può quindi recuperare i nomi e le descrizioni degli articoli nella categoria "scarpe" e inviarli al cliente. Se ad esempio trova dieci articoli, invierà dieci nomi con le relative descrizioni.

Si tratta di un processo semplice, ed è proprio qui che iniziano i guai.

Cos'è un'iniezione SQL?

Per perpetrare un attacco, un hacker tenterà di infiltrare del codice aggiuntivo nella stringa SQL: questa è l'iniezione.

Per fortuna, non sempre gli attacchi vanno a buon fine. Il DBMS del sito interpreta alcuni caratteri come comandi di programmazione (ad esempio, SELECT) e altri come parole e caratteri normali (in questo caso, "scarpe").

Se un sito è stato programmato correttamente, la ricerca di un comando di questo tipo non comporterà un'iniezione: il sistema infatti leggerà il comando come un insieme di caratteri che non riconosce e invierà un messaggio di risposta del tipo "nessun elemento trovato".

Tuttavia, se il sistema non è stato adeguatamente protetto, interpreterà i caratteri inseriti come un vero comando SQL. Ed è proprio qui che le cose possono andare male.

Invece di usare la parola chiave "scarpe", l'hacker potrebbe cercare comandi SQL specifici. Dopo che la stringa è stata formata e inviata al database, il DBMS interpreterà la parola chiave cercata come un comando e lo eseguirà di conseguenza.

Il danno

Utilizzando una tecnica chiamata iniezione SQL cieca, in men che non si dica un hacker può determinare con esattezza quale DBMS opera nel dietro le quinte. Grazie a questa informazione, potrà iniziare a usare il linguaggio SQL appropriato.

Se cerca i termini di programmazione giusti, può forzare il DBMS a restituire l'elenco completo delle tabelle di dati che contiene; fatto ciò, potrà accedere a ognuna di esse ed estrarre le informazioni desiderate. Se un hacker riuscisse a mettere le mani su una tabella "utenti", le conseguenze possono essere davvero gravi.

UNION è un comando di codifica che consente di aggiungere una query supplementare a quella principale. I risultati di questa sottoquery appariranno sotto i risultati della query principale.

Un hacker potrebbe scrivere nella barra di ricerca qualcosa del genere:

"scarpe" UNION (SELECT username, password FROM utenti);--"

All'interno del sistema verrebbe generata una stringa SQL che potrebbe avere questo aspetto:

SELECT nome, descrizione FROM prodotti WHERE categoria = "scarpe" UNION (SELECT username, password FROM utenti);--

A questo punto, oltre ai risultati per la parola chiave "scarpe", il criminale informatico potrà visualizzare tutti i nomi utente e le password presenti nella tabella "utenti".

Anche se le password sono sottoposte a hashing, non ci metterà molto a decifrarle. Se riesce a capire quali nomi utente appartengono agli amministratori, può anche utilizzare un software per attacchi di forza bruta per entrare rapidamente negli account in questione e ottenere l'accesso all'intera applicazione in qualità di amministratore.

Tipologie di iniezioni SQL

Per aiutarti a rendere più solide le tue difese, prima di tutto dobbiamo esaminare nel dettaglio i diversi tipi di attacchi di iniezione SQL e comprendere in modo più approfondito questa categoria di minacce informatiche.

1. Iniezione SQL classica

L'iniezione SQL di tipo classico, altresì nota come iniezione SQL in-band, è la forma più diffusa di questo attacco informatico. Inserendo dei codici SQL dannosi nei campi di input degli utenti, i malintenzionati ottengono un accesso non autorizzato che consente loro di manipolare, eliminare o addirittura eseguire comandi di amministrazione sul database colpito. È fondamentale essere al corrente di questa comune minaccia e adottare le misure necessarie per prevenirla.

2. Iniezione SQL cieca

Gli attacchi di iniezione SQL cieca, come suggerisce il nome, implicano che i criminali informatici debbano procedere per tentativi, senza il privilegio dell'accesso diretto ai risultati del database. Nella maggior parte dei casi, i malintenzionati che perpetrano un attacco SQL cieco ricorrono a una serie di query vere e false per raccogliere informazioni. Questo modo di operare consente ai criminali informatici di dedurre lo schema e i contenuti di un database, un pezzo alla volta.

3. Iniezione SQL basata su errori

Le iniezioni SQL basate su errori sfruttano i messaggi di errore del database per far emergere informazioni sensibili. Gli aggressori che perpetrano questi attacchi inviano intenzionalmente delle query SQL formulate in modo non corretto, inducendo così il database a generare messaggi di errore che contengono preziose informazioni. Analizzando minuziosamente questi messaggi, i criminali informatici possono arrivare a comprendere il funzionamento interno del sistema e identificarne le potenziali vulnerabilità.

4. Iniezione SQL cieca basata sul tempo

Le iniezioni SQL cieche basate sul tempo sono una tipologia più specifica dell'attacco di iniezione SQL cieca. I criminali informatici che conducono attacchi SQL ciechi basati sul tempo si concentrano sul tempo di risposta del database al fine di dedurre informazioni. Inviando delle query SQL che causano ritardi nella risposta, sono in grado di ottenere dettagli specifici sul database a seconda del tempo necessario per ricevere tali risposte.

5. Iniezione SQL out-of-band

Gli attacchi di iniezione SQL out-of-band utilizzano un canale di comunicazione separato per inviare e ricevere dati, invece del canale diretto tra l'applicazione e il database. Questo metodo di attacco, meno comune ma potente, consente ai malintenzionati di aggirare specifiche misure di sicurezza come firewall e sistemi di rilevamento delle intrusioni, al fine di conseguire i propri obiettivi criminali.

I sintomi di un attacco di iniezione SQL

Affrontare un attacco di iniezione SQL può essere complicato, dal momento che non sempre appaiono segni evidenti di una violazione. Tuttavia, spesso esistono dei campanelli d'allarme che indicano che qualcosa non va. Ecco alcuni esempi:

  • Pop-up e messaggi di errore insoliti.

  • Annunci che reindirizzano a siti web sospetti e potenzialmente dannosi.

  • Ricezione di una considerevole mole di richieste in un tempo molto breve (es. arrivo di innumerevoli e-mail dal modulo di contatto).

Quali sono i rischi legati a un'iniezione SQL?

Gli attacchi di iniezione SQL comportano una serie di minacce alla sicurezza dell'azienda colpita. Una volta che i criminali informatici riescono a sfruttare una vulnerabilità legata a un'iniezione SQL, possono:

  • Aggiungere, rimuovere o modificare i contenuti dei database.

  • Scrivere nuovi file nei database.

  • Leggere il codice sorgente del server dei database.

Tali capacità di accesso possono persino portare alla completa acquisizione dei database e del server che, come si può facilmente immaginare, può avere esiti disastrosi.

Come prevenire un'iniezione SQL

Un'iniezione SQL perpetrata con successo può provocare danni enormi. Un hacker può rubare password e dati di pagamento, far trapelare online le informazioni degli utenti e cancellare dati di vitale importanza. Un evento del genere può far perdere la fiducia dei clienti in modo irreversibile. Come si può prevenire?

  • Convalida degli input

    Mettendo a punto un processo di convalida degli input nella codifica backend del tuo sito, puoi fare molto per scongiurare questo tipo di minaccia. Puoi creare un elenco di caratteri consentiti e programmare il DBMS affinché riconosca se una parola chiave non è presente nell'elenco. Se un hacker "cerca" un comando di programmazione, il sistema lo confronta con l'elenco dei comandi consentiti: se non trova una corrispondenza, non esegue il codice.

  • Istruzioni preparate

    Creare istruzioni preparate è probabilmente la strategia migliore. Un sito vulnerabile crea una nuova stringa SQL ogni volta che un hacker esegue una ricerca, ma ciò non avviene quando esiste un'istruzione preparata. Quando programmi il backend del sito, crea i modelli SQL in anticipo, con un punto interrogativo al posto della parola chiave. Il DBMS può essere programmato per interpretare quel punto interrogativo come qualsiasi dato inserito nella barra di ricerca, ma la query stessa è predefinita. Questo riduce drasticamente il rischio che un comando SQL con intento doloso raggiunga il database.

  • Segregazione dei dati

    Più i tuoi dati sono segregati e meno un hacker potrà sottrarne nell'ambito di un singolo attacco. Nell'esempio del negozio online di cui abbiamo parlato in precedenza, il problema della debolezza SQL è pesantemente aggravato dal fatto che i dati degli utenti sono contenuti nello stesso database in cui figurano gli elenchi dei prodotti di base. La separazione di diversi tipi di informazioni all'interno di database e server distinti limita l'entità dei danni che un attacco SQL è in grado di arrecare.

  • Utilizza le tecnologie più recenti

    Assicurati di utilizzare le versioni più recenti degli strumenti di sviluppo per garantire la massima sicurezza. Le tecnologie di sviluppo web meno recenti potrebbero non disporre di protezione SQL o presentare potenziali vulnerabilità di cui i malintenzionati potrebbero approfittare. Assicurati di aggiornare i componenti software che potresti utilizzare per lo sviluppo, dal momento che gli aggiornamenti sono progettati per risolvere i bug e i potenziali problemi di sicurezza.

I migliori strumenti per il rilevamento di iniezioni SQL (SQLi)

Gli strumenti disponibili per il rilevamento di iniezioni SQL sono davvero tanti, quindi può essere molto complicato capire quali siano realmente validi. Proprio come avviene per qualsiasi altra tecnologia, alcuni strumenti spiccano rispetto ad altri: quali aspetti, perciò, caratterizzano le soluzioni migliori? Esaminiamo alcuni dei più validi strumenti per il rilevamento di iniezioni SQL per scoprire cosa li rende superiori agli altri.

  • SQLMap: uno strumento di test di penetrazione open source, utilizzato per rilevare vulnerabilità alle iniezioni SQL nelle applicazioni web. È impiegato su larga scala dai professionisti della sicurezza perché è altamente personalizzabile e supporta diversi sistemi di gestione dei database, tra cui Microsoft SQL Server e Oracle.

  • jSQL Injection: un altro popolare strumento open source progettato per testare applicazioni web. Questo strumento aiuta a migliorare la sicurezza informatica consentendo ai professionisti IT e agli hacker etici di simulare attacchi, individuare le vulnerabilità e comprenderne il potenziale impatto.

  • Imperva: la società statunitense Imperva offre uno strumento chiamato Imperva SQL Injection Protection, che aiuta le aziende a mantenere i loro database al sicuro dagli attacchi di iniezione SQL. Offre un monitoraggio in tempo reale e blocca le attività dannose, fornendo al tempo stesso informazioni e rapporti dettagliati su qualsiasi tentativo di attacco, che aiutano le imprese a rilevare e affrontare tempestivamente i rischi SQL.

  • AppSpider: è un robusto strumento per testare la sicurezza delle applicazioni web, che offre il rilevamento di iniezioni SQL. Grazie alla sua interfaccia intuitiva, AppSpider consente agli utenti di gestire e monitorare in modo efficace le vulnerabilità, offrendo rapporti dettagliati e raccomandazioni per porvi rimedio.

  • Acunetix: un altro popolare strumento per rilevare le iniezioni SQL, che aiuta le imprese a verificare le loro applicazioni web e identificare le vulnerabilità legate a questi attacchi. Le sue capacità di scansione complete (parzialmente basate sull'apprendimento automatico) e l'interfaccia intuitiva lo rendono una soluzione essenziale per mantenere un elevato livello di sicurezza web.

Aggiungere ulteriori livelli di sicurezza alla tua azienda

Le iniezioni SQL rappresentano senza dubbio una delle principali minacce IT, ma si tratta solo di un piccolo tassello del ben più ampio puzzle della sicurezza informatica. Inoltre, sebbene gli strumenti per il rilevamento delle iniezioni SQL siano molto validi per individuare e risolvere le vulnerabilità SQL, purtroppo affrontano solo quel problema specifico.

Come affrontare, quindi, altre minacce come le password deboli o i problemi di gestione degli accessi degli utenti? Gli strumenti per le iniezioni SQL non sono in grado di farlo. Per beneficiare di una solida strategia di sicurezza, occorrono strumenti specifici per ogni problema oppure un'unica soluzione che riesca ad affrontare più minacce contemporaneamente.

Ed è proprio qui che NordPass dimostra tutta la sua utilità. NordPass gode di un'ottima reputazione in qualità di gestore di password con crittografia end-to-end, ma non si limita ad assicurare che i tuoi dipendenti utilizzino credenziali forti e sicure. Consente anche alla tua impresa di gestire l'accesso alle risorse sensibili e di monitorare se i dati aziendali sono trapelati nell'ambito di una violazione.

NordPass offre un'ampia gamma di funzionalità progettate per affrontare diverse minacce alla sicurezza informatica, ma non devi crederci sulla parola: provalo di persona per scoprirne i vantaggi. Inizia una prova gratuita di 14 giorni e scopri come NordPass può aumentare il livello di sicurezza della tua impresa.

Iscriviti alla newsletter di NordPass

Ricevi le ultime notizie e i suggerimenti di NordPass direttamente nella tua casella di posta.