L'iniezione SQL è una cyberattack che sfrutta la scarsa convalida degli input nelle query SQL. Se un'applicazione utilizza l'input dell'utente non attendibile in una query SQL a un database, l'input dell'utente deliberatamente malformato potrebbe essere in grado di modificare la query. Gli attacchi di SQL injection possono essere utilizzati per accedere, modificare o eliminare i dati dal database.
Le applicazioni che eseguono query SQL basate sull'input dell'utente sono potenzialmente vulnerabili agli attacchi di SQL injection. Ad esempio, un'applicazione web può utilizzare query SQL per implementare un processo di autenticazione. L'utente fornisce il proprio nome utente, che l'applicazione utilizza per cercare l'hash della password dell'account di quell'utente. Se l'hash della password fornita dall'utente corrisponde a questo hash della password, l'utente si autentica con successo e ottiene l'accesso al proprio account.
Se l'applicazione web non esegue la convalida del nome utente prima di includerlo in una query SQL, un nome utente deliberatamente malformato potrebbe essere interpretato male dal programma. Ad esempio, le query SQL utilizzano comunemente apici singoli (') o doppi apici (") per indicare i dati in un comando. Per esempio, un comando per cercare il record di un cliente in un database in base al nome utente dell'utente potrebbe essere SELEZIONA * DAI CLIENTI DOVE IL NOME DELL'UTENTE="Utente".
Un aggressore che esegue un attacco SQL injection contro il suo comando potrebbe includere un carattere di doppia virgoletta nel suo input per far sì che alcuni dei suoi dati vengano interpretati come codice. Per esempio, consideriamo il nome utente utente" OPPURE "1"="1.
Quando viene inserita nella query SQL, la query diventa SELEZIONA * DAI CLIENTI DOVE nome utente="utente" OPPURE "1"="1".. Invece di cercare i record in cui il nome utente corrisponde al valore fornito dall'utente, questa query restituirà i record che corrispondono a una delle due condizioni. Il primo è il test previsto nome utente="utente"che restituirà il record dell'utente.
La seconda condizione è il test "1"="1". Poiché questo è sempre vero, restituirà tutti i record del database. Questo potrebbe consentire all'aggressore di estrarre informazioni sensibili su altri utenti o potenzialmente potrebbe consentire all'aggressore di bypassare l'autenticazione o di autenticarsi come un altro utente.
Gli attacchi SQLi possono essere utilizzati per raggiungere diversi scopi e possono essere eseguiti in vari modi. I tre tipi principali di SQLi comprendono:
Gli attacchi SQLi sfruttano la scarsa convalida dell'input quando si utilizzano dati non attendibili per i comandi SQL. Molti attacchi SQLi prevedono l'utilizzo di un carattere inaspettato, come una citazione singola o doppia, all'interno dell'input dell'utente.
Eseguire la convalida dell'input prima di includere i dati forniti dall'utente all'interno delle query SQL può contribuire a ridurre la minaccia di attacchi SQLi. Ad esempio, un'applicazione potrebbe limitare l'immissione di dati da parte dell'utente a una serie particolare di caratteri, come ad esempio consentire solo nomi utente alfanumerici, oppure bloccare determinati caratteri da includere nell'immissione di dati da parte dell'utente. Tuttavia, la convalida degli input, pur essendo importante, non è sufficiente a proteggere dagli attacchi di SQL injection. Gli aggressori possono essere in grado di aggirare le allowlist o le blocklist utilizzando combinazioni inaspettate di caratteri per eludere i blocchi.
Per questo motivo, le aziende dovrebbero anche implementare una Web Application Firewall (WAF) o, idealmente, Protezione delle applicazioni Web e delle API (WAAP) di fronte ad applicazioni web e API che eseguono query SQL. Queste soluzioni possono aiutare a identificare e bloccare le richieste dannose che tentano di sfruttare SQLi e altri attacchi contro applicazioni web e API.
Gli attacchi SQLi sono uno dei tanti attacchi che rappresentano una minaccia per la sicurezza di un'organizzazione. Application Security (AppSec). Le organizzazioni hanno bisogno di soluzioni di sicurezza in grado di proteggere le applicazioni e i database rivolti a Internet, sia on-premise che nel cloud.
Check Point CloudGuard AppSec fornisce funzionalità WAAP automatizzate che apprendono il funzionamento di un'applicazione e impediscono alle richieste illegittime e dannose di raggiungere le applicazioni vulnerabili. Per saperne di più su CloudGuard AppSec e sulla sua capacità di proteggere da SQLi e da altri attacchi, consulti questo articolo. eBook. È anche il benvenuto a Si registri per una demo gratuita per vedere di persona le funzionalità di CloudGuard AppSec.