Di attacchi “SQL Injection” abbiamo spesso parlato. Anche nella classifica stilata da OWASP (ved. questa pagina), le cosiddette “injection flaws” sono al vertice tra i problemi che uno sviluppatore deve tenere in considerazione. E non è male nemmeno se l’utente normale sia consapevole dell’esistenza e della natura di simili minacce.
Da tempo molti siti web vengono “bersagliati” con l’aggiunta di codice nocivo – generalmente contenuto all’interno di IFRAME e spesso “offuscato” -.
Nelle scorse ore è stato sferrato un nuovo imponente attacco “SQL Injection“: secondo gli esperti di Websense decine di migliaia di siti web si sono ritrovati con un riferimento ad un JavaScript dannoso inserito nelle loro pagine. Lo script fa riferimento ad un URL contenente il termine “lizamoon
” e, come spiega Websense, nonostante la pagina remota sembri, al momento, non operativa, il server è sempre attivo e funzionante. Basterebbe quindi un semplice intervento, da parte degli aggressori, per tentare la distribuzione – su vasta scala – di malware e di “rogue software” (ved. questi articoli).
La versione iniziale dello script maligno, si spiega da Websense, conteneva un riferimento ad un sito web noto per la distribuzione di falsi software antivirus.
Un’indicazione della dimensione del problema è restituita da Google che segnala decine di migliaia di siti Internet (forse già oltre 700.000) contenenti una traccia della medesima infezione.
Rammentiamo che si chiama “SQL injection” una particolare pratica di attacco che mira a colpire applicazioni web che si appoggiano a DBMS (ad esempio, Access, SQL Server, MySQL, Oracle e così via) per la memorizzazione e la gestione di dati. L’attacco si concretizza quando l’aggressore riesce ad inviare alla web application, semplicemente usando il browser, una query SQL arbitraria. Quando i dati ricevuti in ingresso dalla pagina web dinamica non vengono opportunamente filtrati, l’interrogazione SQL posta in input dall’aggressore – direttamente nell’URL richiamato da client -, potrebbe essere “agganciata” alla query legittima effettuata a livello server dall’applicazione web. I risultati possono essere drammatici: l’aggressore, nel caso in cui l’attacco vada a buon fine, può essere in grado di alterare dati memorizzati nel database, aggiungere informazioni maligne nelle pagine web dinamiche generate a partire dal contenuto della base dati, modificare username e password.
Come si evince consultando questa analisi (sconsigliamo di visitare i siti web infetti riportati nella pagina), gli aggressori hanno posto – in calce all’URL uno statement DECLARE anteponendovi i caratteri ';
. In questo modo è stato possibile chiudere la query precedente ed abbinare un’altra interrogazione (maligna) sfruttando la possibilità, da parte dei siti web basati ad esempio su SQL Server, di eseguire più query consecutive. Evidentemente l’ultimo parametro ricevuto in input dall’applicazione web non è stato adeguatamente filtrato in fase di sviluppo ed, inoltre, l’uso del DECLARE non è stato impedito nel caso dell’utente anonimo che si connette al sito web.
Effettuando più operazioni di decodifica del DECLARE si è potuto verificare come il recente attacco “di massa” effettui una visita iterativa a tutte le tabelle contenute nel database aggiungendo lo script maligno in coda ai dati già presenti. Ed ecco come, per un errore di programmazione, un malintenzionato può riuscire a scrivere all’interno di un database – pur non conoscendone la struttura e non disponendo, ovviamente, delle credenziali di accesso -.
L’analisi non si riferisce, ovviamente, all’attacco “Lizamoon” dal momento che ancora non sono noti dettagli circa la nuova infezione. E’ comunque probabile che l’aggressione abbia utilizzato un cliché simile.
I dati di registrazione associati al dominio contenente lo script nocivo, spiega Websense, contengono informazioni palesemente fasulle. Purtuttavia, l’indirizzo IP collegato al dominio sembra gestito da un’azienda rumena.
L’analisi pubblicata da Websense è consultabile facendo riferimento a questa pagina.