Che cos'è l'iniezione SQL (SQLi)?

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.

Scarica l'eBook PROGRAMMA UNA DEMO

Che cos'è l'iniezione SQL (SQLi)?

Come viene eseguito un attacco SQL Injection

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.

Tipi di SQL Injection

Gli attacchi SQLi possono essere utilizzati per raggiungere diversi scopi e possono essere eseguiti in vari modi. I tre tipi principali di SQLi comprendono:

  • SQLi in banda: Gli attacchi SQLi in-band utilizzano lo stesso mezzo, come una richiesta HTTP, per eseguire i loro attacchi e raccogliere i risultati. Due forme comuni di attacchi SQLi in-bound sono gli attacchi SQLi basati sull'errore, che tentano di generare messaggi di errore che forniscono informazioni sul database di destinazione da utilizzare negli attacchi, e l'SQL basato sull'unione, che utilizza l'operatore SQL UNION per unire le istruzioni SQL SELECT.
  • SQLi cieco: In un attacco SQLi cieco, l'attaccante non riceve i dati dal server in base alle sue richieste. Invece, l'attaccante modifica i suoi attacchi in base al comportamento del server. Per esempio, input diversi possono far sì che un'operazione abbia successo o fallisca o influire sulla quantità di tempo che un'operazione richiede per essere eseguita.
  • SQLi fuori banda: Gli attacchi SQLi fuori banda eseguono un attacco su un mezzo e raccolgono dati su un altro. Questo attacco si basa sulla disponibilità di alcune funzioni sul server del database. Ad esempio, un attaccante può misurare il successo di un attacco SQLi in base alla possibilità di forzare il server del database a generare richieste HTTP o DNS verso un server controllato dall'attaccante.

Come prevenire la SQLI

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.

Prevenzione SQLi con Check Point

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.

×
  Feedback
Questo sito web utilizza cookies per la sua funzionalità e per scopi di analisi e marketing. Continuando a utilizzare questo sito Web, accetti l'utilizzo dei cookies. Per ulteriori informazioni, leggere la nostra Informativa sui cookie.
OK