Extended Summary of "Search-Based SQL Injection Attacks Testing using Genetic Programming"
1. Extended summary of “Search-Based SQL
Injection Attacks Testing using Genetic
Programming”
Aziz B., Bader M., Hippolyte C. (2016) Search-Based SQL Injection Attacks Testing Using
Genetic Programming. EuroGP 2016.
Candidato: Relatore:
Andrea Gonzato Prof. Andrea De Lorenzo
Laurea Triennale in Ingegneria
Elettronica e Informatica
Anno accademico 2019 - 2020
2. Introduzione: SQL Injection
“SQL Injection è un tipo di attacco informatico il cui scopo è quello di indurre il DBMS ad eseguire query
SQL non autorizzate.”
● Vulnerabilità presente tipicamente nelle applicazioni web che usano un DBMS
● Avviene quando gli input non filtrati vengono utilizzati nelle query
○ Attaccante inietta del codice lo scopo di controllare la struttura e logica delle query
● Conseguenza: dati esposti
3. Introduzione
● La SQL Injection è la vulnerabilità più diffusa in ambito Web Application
(OWASP, 2017)
● Testare il software è importante
○ permette di individuare gli input e i parametri vulnerabili da SQL Injection
○ fondamentale eseguire molti test
■ automatizzare il processo di testing
4. ● Come automatizzare il test di software contro SQL Injection
○ Come generare automaticamente i test da eseguire
Problema
Soluzione proposta
Sistema che utilizza tecniche di Programmazione Genetica per generare test
5. Programmazione Genetica
● è una tecnica di apprendimento automatico
● si basa sull’evoluzione di individui
○ generazione popolazione
■ selezione
● fitness function
■ replicazione
6. Implementazione sistema su ECJ
● Gli individui sono i test, cioè stringhe con tentativi di SQL Injection
○ Sono rappresentabili con strutture ad albero
● Definizione nodi dell’albero
○ Terminal set
○ Functions set
● Definizione fitness function
○ Numero di attacchi
L’individuo rappresenta la
stringa: 1199 OR 1 = 1 ; --
nodi operazione
PARA x )
CMT x --
Double
QUOTE
x ”
QUOTE x ’
SEMI x ;
AND x1 AND x2
OR x1 OR x2
9. Conclusioni
● Per ogni parametro vulnerabile sono stati generati test con SQL Injection
● Procedimento a elevato sforzo computazionale
● La metodologia potenzialmente è applicabile anche per generare test
contro cross-site scripting