


Aggiornato al : apr 28, 2008
L’attacco denominato SQL injection costituisce uno degli svariati attacchi alle applicazioni web che rientrano nella categoria della cosiddetta code injection. L’argomento della code injection è molto vasto e riguarda una serie di linguaggi ed ambienti differenti il cui filo conduttore è l’inserimento di codice malevolo in un’applicazione web, avente l’obiettivo di inteferire con il suo funzionamento, al fine
di ottenere l’accesso non autorizzato ad informazioni riservate o l’esecuzione di comandi illeciti.
La code injection fa riferimento, in particolare, alla categoria dei linguaggi interpretati, ovvero quei linguaggi le cui istruzioni vengono tradotte ed eseguite a tempo di esecuzione. La maggior parte dei linguaggi impiegati nelle applicazioni web appartiene a tale categoria, per cui risulta vulnerabile ad attacchi di code injection. Tale debolezza è dovuta al fatto che, nei linguaggi interpretati dedicati al web, sono le informazioni fornite dall’utente a determinare le azioni da compiere, per cui il codice elaborato dall’interprete risulterà un miscuglio tra le istruzioni scritte dal programmatore ed i dati inseriti dall’utente stesso.
Un attaccante può quindi inserire informazioni che esulano dal contesto dei dati richiesti, ma che sintatticamente vengono valutate dall’interprete come vere e proprie istruzioni del linguaggio in questione. Il risultato è che esse vengono eseguite indistintamente insieme al codice scritto in origine dal programmatore.
Nell’ambito della code injection, la SQL injection è l’attacco che riveste una maggiore importanza e che spesso presenta gli effetti più devastanti. La principale causa è legata al fatto che le istruzioni SQL siano espresse in forma di concatenazione di stringhe, e ciò le rende facilmente modificabili dall’esterno.
Il Web Application Security Consortium Glossary [1] fornisce una definizione formale del concetto di SQL injection, descrivendola come ‘An attack technique used to exploit web sites by altering backend SQL statements through manipulating application input’, ovvero una tecnica di attacco che sfrutta le vulnerabilità dei siti web che si appoggiano a database di tipo SQL, alterando le query mediante
la manipolazione delle informazioni fornite in ingresso.
Molte pagine web richiedono infatti l’inserimento di particolari parametri da parte dell’utente, inoltrando in seguito una specifica query al database SQL, memorizzato sul server. Un semplice esempio è quello della registrazione ad un sito web. All’utente viene proposto un form per l’inserimento dei propri dati personali (dati anagrafici, nome utente, password). Una volta inserite tali informazioni, esse vengono inviate al server sul quale sarà presente un database, contenente i dati relativi agli utenti registrati fino a quel momento. Verrà quindi inoltrata una query al database per l’inserimento di una nuova entry nella tabella degli utenti, contenente le informazioni sul nuovo utente registrato. Ciò sarà utile per la successiva autenticazione dell’utente stesso.
L’attacco di SQL injection sfrutta l’inadeguatezza dei controlli sui dati ricevuti dall’applicazione web in input (in questo caso mediante il form HTML) per inserire codice malevolo all’interno di una query SQL, con conseguenze imprevedibili al programmatore e, certamente, devastanti. L’attaccante può infatti guadagnarsi un accesso privilegiato a dati ed informazioni riservate e sfruttarle a suo piacimento per portare a termine la propria incursione. Le informazioni accedute illegalmente possono essere non solo lette, ma anche modificate o cancellate.
In aggiunta a tutto ciò, alcuni server SQL contengono procedure il cui accesso da parte di un attaccante potrebbe compromettere il funzionamento dell’intero sistema.
Tutto ciò di cui deve disporre un eventuale attaccante per portare a termine un attacco del genere è un semplice web browser, una pagina web vulnerabile ad attacchi di SQL injection ed una conoscenza più o meno approfondita del linguaggio SQL. Tornando all’esempio della registrazione di un utente web, al momento del login egli inserirà il proprio nome utente e la propria password ed
una query SQL verificherà che le credenziali di accesso fornite siano corrette.
Un potenziale attaccante potrebbe sfruttare tale processo per inserire appositi comandi SQL nel form di login, modificando in tal modo la query ed ottenendo, ad esempio, l’accesso al sito senza possedere alcune credenziali di autenticazione.
Le tecniche della SQL injection si possono definire di tipo cross platform, esse prescindono infatti dai DBMS utilizzati per fornire un supporto alle applicazioni web, quali ad esempio Oracle, MySQL o MS-SQL. Tuttavia, per ciascuna di essi possono esistere variazioni sia a livello sintattico che a livello comportamentale rispetto ad un determinato attacco.
Articolo Precedente -> Vulnerabilita delle applicazioni web
Articolo Successivo -> I bersagli della SQL injection : test di vulnerabilità
[1] Web Application Security Consortium. Web Application Security Consortium
Glossary. http://www.webappsec.org.
Autore : Simon. U


You may be the one to comment first. Please leave your message below.








