Akamai dots background

Tutorial SQL injection

Il presente tutorial sull’attacco SQL injection presenta brevemente una delle minacce più comuni alla sicurezza sul Web per le aziende e le organizzazioni pubbliche. Il tutorial sull’attacco SQL injection affronta quattro argomenti:

  • Contesto degli attacchi SQL injection
  • Obiettivi degli attacchi SQL injection
  • Funzionamento degli attacchi SQL injection
  • Modi per difendersi dagli attacchi SQL injection

Tutorial sull’attacco SQL injection – Argomento 1: Contesto degli attacchi SQL injection

La maggior parte delle moderne applicazioni Web presenta la stessa struttura di base e la stessa architettura logica: un client Web (in genere un browser) comunica con un’applicazione Web ospitata su un server Web e l’applicazione Web, a sua volta, comunica con uno o più database back-end. I database archiviano una moltitudine di informazioni relative all’applicazione, come le combinazioni nome utente/password e i dati di account dell’utente. Gli utenti finali accedono e modificano tali informazioni compilando delle voci in moduli presenti sulle pagine Web (per es. moduli di login o di ricerca). Sulla base dell’input dell’utente, l’applicazione Web invia dei comandi ai database, il più delle volte in SQL (Structured Query Language), il linguaggio dei comandi utilizzato dalla maggioranza dei database basati su un modello relazionale. Il database risponde e l’applicazione Web, a sua volta, risponde all’utente.

Tutorial sull’attacco SQL injection – Argomento 2: Obiettivi degli attacchi SQL injection

In un attacco SQL injection, un hacker esperto di sintassi SQL invia delle voci false ai moduli delle pagine Web con l’obiettivo di ottenere un accesso più diretto ed esteso al database back-end di quanto previsto dall’applicazione Web. Il più delle volte questi attacchi tentano di recuperare informazioni di valore, come le combinazioni nome utente/password oppure dati societari o finanziari sensibili. In alcuni casi, un attacco SQL injection può anche cercare di modificare i dati (come il saldo di un conto) o di eliminarli volontariamente. In questo modo, gli attacchi SQL injection possono provocare maggiori vulnerabilità di cyber sicurezza.

Tutorial sull’attacco SQL injection – Argomento 3: Funzionamento degli attacchi SQL injection

Un attacco SQL injection prevede l’inserimento, da parte di un hacker, di termini e caratteri SQL specializzati nel campo di un modulo Web al fine di ingannare l’applicazione che invia così al database comandi diversi da quelli che invierebbe normalmente. Per fare un esempio (tratto dal sito Web dell’Open Web Application Security Project [OWASP]), consideriamo il caso in cui il codice di un’applicazione sia stato scritto con l’intento di inviare a un database il seguente comando:

---------------

SELECT * FROM accounts

WHERE owner =

AND accountname = ;

---------------

Questo comando intende recuperare le informazioni di un account dalla relativa tabella, ma solo nel caso specifico in cui il nome del titolare e il nome dell’account specificati siano entrambi riportati nella stessa voce della tabella. Questo specifico comando, nome titolare e nome account, potrebbe essere inviato da un utente finale tramite un modulo presente su una pagina Web.

Un malintenzionato potrebbe inserire nel modulo Web un nome titolare e un nome account falsi digitando “‘name' OR ‘x’=’x’”. Se l’applicazione non dispone di difese adeguate contro attacchi di questo tipo, l’uso delle virgolette singole e del termine OR producono l’effetto di creare un comando SQL modificato che viene inviato al database:

---------------

SELECT * FROM accounts

WHERE owner = ‘smith’

AND accountname = ‘name’ OR ‘x’ = ‘x’;

---------------

La clausola, generalmente restrittiva, WHERE viene ora soddisfatta da ogni voce della tabella “accounts”, perché nonostante la combinazione nome titolare/nome account “smith/name” possa non essere presente, la parte introdotta da OR – ‘x’=’x’ – è sempre vera. Pertanto, qualsiasi voce della tabella può essere restituita all’applicazione e, di conseguenza, all’utente finale.

Tutorial sull’attacco SQL injection – Argomento 4: Modi per difendersi dagli attacchi SQL injection

Il presente tutorial sull’attacco SQL injection ha introdotto brevemente i motivi e le tecniche di base degli attacchi SQL injection. Per i proprietari di applicazioni Web, la questione fondamentale è come sventare questi attacchi. Esistono due approcci generali:

  • Attenta codifica dell’applicazione. Un’ampia gamma di best practice di programmazione possono ridurre fortemente la vulnerabilità di un’applicazione Web agli attacchi SQL injection. Queste includono l’uso di query parametrizzate o di procedure archiviate; oppure l’utilizzo di liste nere o liste bianche di caratteri per filtrare e ripulire l’input dell’utente nei moduli Web. Tuttavia, affidarsi interamente a una buona programmazione rappresenta di rado un approccio completamente adeguato per garantire la sicurezza dei servizi Web e la protezione dei dati. Ciò è dovuto in parte al fatto che le applicazioni Web sono il risultato del lavoro di diversi programmatori in un lungo periodo di tempo; e in parte perché l’aggiornamento delle applicazioni Web con vulnerabilità note può avere costi proibitivi.
  • Installazione di un WAF (Web Application Firewall) davanti all’applicazione Web, per ispezionare e filtrare il traffico HTTP in entrata. Un WAF può essere un mezzo di difesa efficace contro gli attacchi SQL injection, ma i tradizionali WAF installati in loco possono diventare facilmente fonte di rallentamento delle prestazioni.

La soluzione per la sicurezza sul Web basata sul cloud di Akamai integra un WAF nella rete globale per la distribuzione dei contenuti Web di Akamai. La soluzione fornisce un mezzo di difesa all’avanguardia e ampiamente distribuito contro gli attacchi SQL injection, senza rallentare le prestazioni delle applicazioni Web. La soluzione protegge anche contro la tattica, sempre più diffusa, di lanciare un attacco DoS contro una proprietà Web, sferrando al contempo un attacco SQL injection.

Ulteriori informazioni sulle soluzioni di cloud security basate su cloud e altamente scalabili di Akamai.