Iniezione SQL: è ancora una minaccia? Come puoi evitarlo?
Pubblicato: 2020-03-07Le violazioni dei dati sono così comuni che non sono nemmeno più sorprendenti. Gli attori malintenzionati mirano a raccogliere quanti più dati possibile. Sono alla ricerca di credenziali di accesso, informazioni sulla carta di credito o segreti commerciali. Una volta che mettono le mani su tali dati, li vendono sul dark web.
Se non riesci a capire quanti dati hanno rubato finora e quanti ne hanno scaricati sul dark web, ecco un numero preoccupante. L'anno scorso, i criminali hanno rubato e venduto 620 milioni di account solo da sedici siti Web compromessi. Sì, l'hacking di sedici siti Web può causare così tanti danni. Ma sai cos'è peggio? Migliaia di nuovi siti vengono violati ogni giorno!
I criminali informatici escogitano ogni giorno nuovi metodi di hacking. Ma ciò non significa che dimentichino le tecniche più vecchie, come le iniezioni SQL. Sono ancora uno dei vettori di attacco più comuni che sono semplici da eseguire e producono risultati fruttuosi.
- Che cos'è SQL Injection e perché è pericoloso?
- Come funziona SQL Injection?
- Iniezione SQL in banda
- Iniezione SQL cieca
- Iniezione SQL fuori banda
- Questa minaccia è ancora rilevante?
- Suggerimenti per la sicurezza per la prevenzione
- Parole finali
Che cos'è SQL Injection e perché è pericoloso?

SQL Injection, noto anche come SQLi, è una forma di attacco injection, che consente all'hacker di eseguire un'istruzione SQL. Gli attacchi injection sono un'ampia categoria di diversi vettori di attacco. Ma tutti consentono agli attori malintenzionati di eseguire input pericolosi. Agiscono come un comando di sistema, che viene quindi eseguito.
Le istruzioni SQL sono più comunemente utilizzate per aggiungere o recuperare dati da vari database. Molti famosi sistemi di gestione come Microsoft SQL Server, Access e Oracle utilizzano queste istruzioni.
Poiché molti sistemi di gestione di database ampiamente utilizzati utilizzano istruzioni SQL, gli hacker possono sfruttare questi sistemi tramite iniezioni SQL. Significa che i criminali possono accedere e rubare dati sensibili memorizzati nel database. Può includere quanto segue:
- proprietà intellettuale.
- Informazioni sulla carta di credito.
- informazioni per il cliente.
- indirizzi.
- segreti aziendali.
Consigliato per te: Chrome vs Firefox: il confronto tra prestazioni, sicurezza e privacy!
Come funziona SQL Injection?

Per eseguire un attacco SQL injection, l'hacker deve individuare gli input degli utenti vulnerabili all'interno del sito Web o delle applicazioni interne dell'azienda.
Ad esempio, la vittima utilizza WordPress per il proprio sito web. Il codice potrebbe presentare una vulnerabilità SQL che invia l'input dell'utente direttamente al database senza alcuna sanificazione. Se un hacker individua tale vulnerabilità, può inviare comandi al database in questione. Quindi, l'output del database torna al browser e consente all'hacker di eseguire diversi comandi. In questo modo possono scaricare l'intero database, impostare nuovi comandi, modificare account utente o creare nuovi account.
Esistono tre forme principali di attacchi SQL injection:
- Iniezione SQL in banda:
- Iniezione SQL basata su errori.
- Iniezione SQL basata su unione.
- Iniezione SQL cieca:
- Booleano.
- Basato sul tempo.
- Iniezione SQL fuori banda.
Iniezione SQL in banda
L'iniezione SQL in banda è uno dei tipi più comuni perché è semplice ed efficiente. In questo caso, l'attaccante utilizza lo stesso canale di comunicazione per eseguire l'attacco e raccogliere i risultati. Ha due varianti secondarie: SQL injection basata su errore e basata su unione:
- L'iniezione SQL basata sugli errori consente all'hacker di far sì che il database produca messaggi di errore. Quindi, possono utilizzare questi messaggi di errore per raccogliere informazioni sul database stesso.
- L'iniezione SQL basata su unione consente al colpevole di sfruttare l'operatore UNION SQL. Combina diverse istruzioni fornite dal database per ottenere una risposta HTTP. Tale risposta spesso contiene dati che gli hacker possono sfruttare.
Iniezione SQL cieca
Le blind SQL injection si basano sui modelli comportamentali del server. Sono molto più lenti da eseguire. L'hacker emette payload di dati e ispeziona la risposta del server per analizzarne la struttura. Lo chiamano "cieco" perché i dati non vanno direttamente agli hacker. Pertanto, non possono vedere alcuna informazione sull'exploit in banda. È disponibile in due varianti, vale a dire booleano e basato sul tempo:
- La variazione booleana consente all'hacker di inviare una query SQL, che richiede al database di restituire informazioni. Le informazioni all'interno della risposta HTTP cambiano a seconda del risultato precedente.
- La variazione basata sul tempo consente all'attore malintenzionato di inviare una query SQL direttamente al database, costringendo il database ad attendere prima di poter reagire. L'attaccante prende nota del tempo necessario al database per rispondere e decide se la query è vera o falsa. In base al risultato, la risposta HTTP è immediata o ritardata.
Iniezione SQL fuori banda
L'iniezione SQL fuori banda consente all'hacker di attaccare il database solo se sul server del database sono abilitate funzionalità specifiche. È il metodo di iniezione SQL meno popolare. Molti hacker lo usano in sostituzione delle iniezioni SQL basate su errori e Blind.

Questo particolare attacco è un'opzione quando l'hacker non può utilizzare lo stesso mezzo per eseguire l'attacco e raccogliere informazioni. Oppure possono utilizzare questa iniezione quando un server è instabile e lento nell'eseguire gli altri due tipi di iniezione. Questa tecnica crea richieste DNS e HTTP per inoltrare i dati rubati.
Potrebbe piacerti: Suggerimenti per la valutazione e la gestione del rischio di sicurezza informatica per le piccole imprese.
Questa minaccia è ancora rilevante?

Le iniezioni SQL sono una delle forme più antiche di attacchi informatici aggressivi. Eppure è ancora molto attuale. L'Open Web Application Security Project ha elencato le iniezioni SQL come la minaccia numero uno due anni fa. Il fornitore di servizi cloud Akamai ha creato un rapporto sullo stato di Internet, che ha rilevato che le iniezioni SQL sono state responsabili del 65% di tutti gli attacchi basati sul Web dal 2017 al 2019. Quindi si può affermare che l'iniezione SQL compare ancora in due terzi degli attacchi Web negli ultimi anni.
Nel primo trimestre del 2017, questi vettori sono stati responsabili del 44% degli attacchi a livello di applicazione. A peggiorare le cose, nessun'altra forma di vettore di attacco alle applicazioni cresce così velocemente come le iniezioni SQL. A novembre 2018 si è verificato un altro picco significativo. Ha dimostrato che ci sono stati oltre 35 milioni di tentativi di attacco SQL injection. Gli esperti ritengono che la causa principale di questo picco sia stata la stagione delle vacanze. È qualcosa di cui tutti i proprietari di siti Web dovrebbero essere consapevoli, soprattutto se operano nel settore della vendita al dettaglio. Ma anche al termine delle festività natalizie, l'SQL injection rimane una minaccia di cui devi essere consapevole.
Gli Stati Uniti sono l'obiettivo principale per gli attacchi a livello di applicazione. Ha affrontato circa 3 miliardi di attacchi in soli 17 mesi. Altre vittime popolari includono Regno Unito, Germania, Brasile, India, Giappone, Canada, Australia, Italia e Paesi Bassi. Quindi, è lecito ritenere che sia ancora una minaccia enorme e che tutte le aziende dovrebbero adottare ampie misure precauzionali.
Suggerimenti per la sicurezza per la prevenzione

La migliore linea d'azione per gli sviluppatori è introdurre misure precauzionali per impedire che gli attacchi si verifichino. Queste sono le misure di prevenzione più efficaci:
- Convalida dell'input: la convalida dell'input verifica se un particolare input dell'utente è consentito o meno. Ciò significa che il formato, la lunghezza e il tipo devono essere accettati collettivamente. È utile per combattere i comandi che l'hacker inserisce nella stringa di input.
- Query con parametri: le query con parametri sono un modo per precompilare diverse istruzioni SQL. Quindi memorizza i parametri in modo che l'istruzione possa essere eseguita. Consente al database di riconoscere il codice e di differenziarlo dai normali dati di input.
- Procedure memorizzate: richiedono agli sviluppatori di raggruppare una o più istruzioni SQL in un'unità logica. È una forma di codice che si può memorizzare, come suggerisce il nome, e salvare per dopo.
- Escape: gli sviluppatori dovrebbero utilizzare funzionalità di escape dei caratteri per garantire che il DBMS non confonda l'input dell'utente con un'istruzione SQL.
- Web Application Firewall: è uno dei metodi più sicuri per prevenire gli attacchi SQL injection. Il firewall monitora il traffico che circola da e verso il server. Identifica quali richieste sono potenzialmente dannose e quali no. Questa soluzione è sufficiente per molti altri exploit, quindi è sempre decente.
- Evitare i privilegi amministrativi: gli sviluppatori non dovrebbero mai connettere le proprie app al database tramite account con accesso root. In caso contrario, gli hacker potrebbero accedere all'intero sistema e causare danni irreparabili. Inoltre, gli sviluppatori dovrebbero assicurarsi che ogni database abbia il proprio set di credenziali con limited.
Ti potrebbe piacere anche: I 10 software di sicurezza Internet più venduti (antivirus e sicurezza).
Parole finali

Chiunque sia preoccupato per l'iniezione SQL non dovrebbe dimenticare nemmeno altri possibili attacchi. Si applicano le solite pratiche di sicurezza informatica: utilizzare password robuste, imparare a riconoscere le minacce, attivare una VPN ogni volta che ci si connette a siti Web o database e così via. Cos'è una VPN e cosa fa? Crittografa il tuo traffico online ogni volta che vai online. Quindi, se invii una richiesta SQL al tuo database, solo il DB può decrittografarlo. Se qualcuno intercetta i pacchetti di dati in questione, non ne avrà alcun senso. Più siete pronti voi o la vostra azienda per tutti i tipi di minacce, meglio è.
Solo l'introduzione di misure preventive complete garantisce che l'SQL injection o gli attacchi non abbiano mai successo. Preparati a investire molto tempo, sforzi e denaro per assicurarti di avere gli strumenti adeguati per combattere vari exploit.
