Dgroove

SQL Injection: cos’è e come prevenirla

“Iterum rudit leo” – questa la conclusione del report Akamai che, prendendo in esame i log del proprio WAF tra Novembre 2017 e Marzo 2019, sottolinea un trend in crescita a dir poco preoccupante: circa il 65% delle applicazioni considerate durante il periodo di 17 mesi è preso di mira da attacchi volti a sfruttare problematiche di tipo SQL Injection.
Nel corso di questo articolo verranno dunque analizzati i diversi tipi di SQL injection, quale è il loro impatto e infine come prevenire tali problematiche o almeno ridurne al massimo l’impatto finale.

Indice degli argomenti

  1. Quali sono le tipologie di SQL Injection?
  2. Qual è il massimo impatto ottenibile?
  3. Come prevenire le SQL Injection?

Secondo la classificazione presente nella OWASP Top 10, la SQL Injection (spesso abbreviata in “SQLi”) è una vulnerabilità server-side che ricade all’interno della categoria “A1 Injection” e identifica quella categoria di vulnerabilità che permettono l’iniezione di codice SQL all’interno di una query rivolta verso il backend, con la possibilità di alterarne il risultato ed eseguire comandi tipici della sintassi SQL adottata per interrogare il database.

Tipologie di SQL injection

Le SQL injection si differenziano tra loro in base alla tecnica adottata per esempio filtrare le informazioni dal database e sono dunque raccolte in 3 grandi macro categorie che al loro interno presentano divisioni ulteriori in base al vettore di attacco usato per eseguire il recupero del risultato ottenuto a partire della query richiesta.

Le 3 macrocategorie precedentemente citate sono le seguenti:

Qual è il massimo impatto ottenibile?

La SQL injection è forse una delle vulnerabilità più importanti e, malgrado l’impatto possa variare in base al punto di iniezione e alle difese in campo, è quasi sempre possibile raggiungere uno dei seguenti impatti:

Come prevenire le SQLi?

Secondo la “OWASP SQL Injection Prevention Cheat Sheet” le migliori modalità per eliminare la possibilità di SQLi sono le seguenti:

Alcuni suggerimenti per evitare che una SQLi possa raggiungere il suo massimo impatto invece sono:

Conclusioni

La SQL injection è forse uno degli attacchi più diffusi e d’impatto di tutti i tempi: alcuni degli attacchi più famosi, come il data breach di 7-Eleven che nell’Ottobre del 2019 espose ben 130 milioni numeri di carte di credito, sono possibili tramite questa vulnerabilità che potrebbe potenzialmente essere presenti in molti dei software attualmente in uso. 

A livello di best practice, controllare l’input passato da un possibile attaccante, monitorare e mantenere bassi i privilegi sono solitamente gli ingredienti della strategia vincente per contrastare sufficientemente questo tipo di attacchi.

Exit mobile version