Nota: Se stai leggendo questo messaggio è perchè non vedi i nostri file css, oppure perchè non hai un browser "standards-compliant browser". Leggi l'aiuto.

TechTarget Italy & 01net Network SearchCIO.it SearchNetworking.it SearchSecurity.it 01net 01netCIO 01netPMI 01netTRADE 01netNETS iTechStudio Digifocus Applicando CIO Club ProntoImprese IlSoftware
Cerca
in
Individuare e bloccare gli attacchi SQL injection
Sicurezza di rete
Individuare e bloccare gli attacchi SQL injection
Le tecniche usate dagli attacker per individuare potenziali vittime sono molteplici, ma tutte indirizzate verso le applicazioni Web. Perciò una protezione adeguata di tali applicazioni può prevenire consistenti danni. Ecco come fare
03 Settembre 2009

L'SQL injection è un tipo di vulnerabilità che riguarda gli input degli utenti usati per query SQL o comandi volti a modificare e gestire i database. Se tali input non sono resi immuni da attacchi prima di essere collegati con uno statement SQL, un attacker può modificare la query al fine di produrre risultati diversi da quelli pensati dagli sviluppatori.

L'SQL "modificato" può eseguire tutte le azioni consentite dal livello di privilegio d'accesso dell'utente sia sul database stesso, sia sul sistema o sulla rete dove tale database è in esecuzione.

Nel 2008, sono stati utilizzati worm per compromettere i server Web e installare malware che infettasse i visitatori di determinati siti. I worm usano gli attacchi SQL injection automatizzati per modificare i dati nel database che dovrebbe essere visualizzato dagli utenti come parte di una pagina Web. Questi dati modificati dovrebbero essere caricati in pagine Web, le quali reindirizzano l'utente verso un altro sito che ospita il malware. In questo articolo, analizzeremo alcuni modi per prevenire questo tipo di attacchi automatizzati.

Il modo in cui viene eseguito un payload nel browser dell'utente rende l'attacco simile a un persistente scripting cross-site, un exploit in cui un cracker inserisce il codice maligno all'interno di un link che sembrerebbe affidabile. La differenza sta nel fatto che l'eseguibile maligno inserito durante l'attacco SQL injection può trovarsi in diverse parti del sito, e non solo in luoghi in cui la risposta include l'input precedentemente inserito dall'utente, come avviene nel caso dello scripting cross-site. Quando un utente visualizza una pagina che include i dati contaminati, sarà reindirizzato a una pagina che scaricherà il malware sul computer locale.

SQL injection automatizzata, con l'aiuto dei motori di ricerca
I worm dell'SQL injection automatizzata si avvalgono dei motori di ricerca per scoprire i candidati per l'attacco. Attraverso la ricerca di stringhe con associati parametri per le applicazioni Web, i worm sono in grado di individuare gli obiettivi. I worm possono cercare nomi di pagine specifici come "form.asp" o nomi inseriti all'interno di form come "username".

I motori come Google forniscono anche opzioni avanzate di ricerca, quali "inurl:", "allinurl:" e "site:", che consentono ai programmatori del worm di specificare le modalità volte a cercare tali parametri, come per esempio "inurl:username=".

I worm lanciano quindi degli attacchi SQL injection per compromettere l'identità del sito. Attaccando i server Web che consentono di accedere a un database, i worm non perdono tempo con i server che non hanno contenuti dinamici e trascorrono meno tempo a vagare in modo casuale a identificare obiettivi da sfruttare, potendosi così diffondere più rapidamente.

Fortunatamente, i motori di ricerca, Google in testa, hanno preso atto di questo stato di cose e stanno lavorando per impedire a tali worm di individuare potenziali vittime. Le ricerche ripetitive all'interno di query simili a quelle effettuate dai worm vengono negate, limitando in questo modo la capacità dei worm stessi di trovare i server vittima. Tuttavia, il fatto che si usino i motori di ricerca per rallentare la diffusione di questi worm non attenua la loro capacità di sfruttare il vostro sistema una volta che si sono istallati.

Come individuare le vulnerabilità all'SQL injection
Per stabilire se le vostre applicazioni database sono state infettate bisogna effettuare dei controlli periodici. L'interrogazione del database per ricercare i comuni tag HTML utilizzati dai worm può dare indicazioni del fatto che l'applicazione stia diffondendo del malware. Tra questi tag troviamo "iframe", "http-equiv="refresh"" o l'indirizzo IP di server maligni conosciuti.

Un modo più semplice per individuare segnali di compromissione è l'esame di pagine Web create da contenuti dinamici al fine di identificare un comportamento imprevisto, compresa l'aggiunta di iframe nascosti nell'HTML, ovvero elementi di codice utilizzati per incorporare documenti HTTP in altri documenti HTTP.

Tali controlli periodici aiutano a individuare un sistema compromesso, ma questo metodo permette soltanto di fare la correzione ex-post. Recuperare un'applicazione che è stata infettata, in particolare quando possono essere stati alterati i dati, può essere un processo estremamente costoso e non previene da eventuali ulteriori attacchi.

Come prevenire gli attacchi di SQL injection automatizzata
I worm dell'SQL injection automatizzata utilizzano le vulnerabilità esistenti nell'applicazione per forzare payload maligni nel database. L'approccio migliore per lottare contro tali worm è l'eliminazione delle vulnerabilità SQL injection in un'applicazione Web.

L'esecuzione di controlli di sicurezza completi nell'applicazione può determinare la presenza di vulnerabilità nei vostri sistemi. Questi test di penetrazione simulano un attacco utilizzando molti degli stessi strumenti e delle tecniche impiegati dagli attacker per individuare i punti deboli.

Vari tool commerciali e gratuiti, come per esempio SQL Inject-Me, sono in grado di rilevare la presenza di vulnerabilità SQL injection in applicazioni Web. Usando questo tipo di strumenti, gli sviluppatori e i team QA sono in grado di rilevare e correggere questi “buchi” prima che siano sfruttati da un utente malintenzionato o da un worm.

*senior consultant di Security Compass

Il Sole 24 ORE S.p.A.

Sede Legale in Milano, Via Monte Rosa, 91 - Sede Operativa: Via Carlo Pisacane, 1 - Pero (MI)

Partita Iva - Codice Fiscale 00777910159 - Dati societari