Sunteți pe pagina 1din 17

Soluții pentru prevenirea

atacurilor de tip injectare de


comenzi folosind tehnici de
învățare automată
Studiu de caz: Aplicații Web

1/17
SQLi : Principiul atacului și impactul în securitate

Cercetări în domeniu

Abordarea propusă

Rezultate și direcții viitoare de dezvoltare

Q&A
Web server

username SELECT * FROM users WHERE


username = ‘ ’ AND
password = ‘ ‘;
password

Login

3/17
Web server

username SELECT * FROM users WHERE


username = ‘ ‘ AND
password = ‘ ‘;
‘ OR 1=1;--

Login

4/17
SQLi – o problemă modernă?

5/17
Soluții de securitate bazate pe algoritmi de învățare automată

6/17
Aplicație pentru detecția și prevenția SQLi

Agnostică față de
Învățare automată
conținutul aplicației

7/17
Etape cheie

1. Cum deosebim o cerere ce 2. Acceptă aplicația comenzi SQL?


conține comenzi SQL de
celelalte?

Probabil nu..
(mai mult decat
sigur NU)

Probabil unii parametrii


acceptă comenzi SQL ca și
conținut valid

)*+;<"(‘|--

8/17
Etapa 1.1: Adnotarea automată a setului
de date de antrenament (DONE)

Log-urile și/sau Extrage parametrii:


Grupuri de tipare
conținutul Aplicare DBSCAN
cererii de acces
nume_parametru: valoare

Etapa 1.2: Antrenarea unui algoritm de


învățare supervizată în scopul detectării
unei cereri cu conținut SQL (TBD)

Clasificare live a cererilor


Grupuri de tipare de Antrenare
atac/acces legitim
recepționate de server
clasificator

9/17
Funcția de distanță
Exemplu valoare parametru:
" AND 6419=(SELECT (CASE WHEN (6419=4636) THEN 6419 ELSE (SELECT 4636 UNION SELECT 7075) END))--

CRITICAL
HIGH Suma Scorul
Cuvânt cheie SQL / Pondere MEDIUM
parametrilor intermediar
caracter special LOW al cererii
EXTRALOW

Funcția de
normalizare X

Caracter liniar pentru Caracter amplificator pentru Caracter limitant pentru


0 <= scor < valoarePrag1 valoarePrag1 <= scor < valoarePrag2 valoarePrag2 <= scor < MAX_VALUE

10/17
Pentru fiecare log din setul de log-uri
Extrage dicționar de forma nume_parametru:valoare
Pentru fiecare valoare din dicționar

Calculează suma ponderată a caracterelor SQL


și/sau a caracterelor speciale întalnite în valoare

Adaugă suma ponderată parțială la suma totală asociată cererii

Normalizează valoarea sumei totale cu ajutorul funcției X

Asociază valoarea obținută log-ului analizat

Aplică DBSCAN pentru a obține grupurile de tipare de acces

11/17
Mediul de
testare al
algoritmul
ui

12/17
•36k de cereri
•18k cereri de atac
•18k cereri normale

13/17
Acces normal Atac

14/17
Etapa 2.1: Creare grupuri clase de date a
parametrilor (TBD)

Set de cuvinte ce
pot reprezenta Creare grupuri de
numele unui clase de date
parametru

Etapa 2.2: Antrenarea unui algoritm de învățare


supervizată în scopul detectării legitimității unui
parametru cu conținut SQL (TBD)

Determinare live a
Grupuri de clase de Antrenare legitimității parametrilor
date clasificator cu conținut SQL

15/17
16/17
17/17

S-ar putea să vă placă și