Alessandro Rugolo : 1 Maggio 2024 10:38
Ho già parlato in diverse occasioni di attacchi del tipo SQL Injection e questo non è che una sua evoluzione. Come è noto SQL è il linguaggio standard impiegato per interagire con un database relazionale.
SQL Injection o “Structured Query Language Injection” è un tipo di attacco nei confronti del database di un’applicazione web che consiste nella esecuzione di una interrogazione malevola. Molte applicazioni WEB sono infatti tuttora vulnerabili a questo tipo di attacco che consiste nell’inserire nei campi di ricerca o nei form interni delle stringhe di testo che includono dei simboli o dei caratteri speciali che a noi possono sembrare innocui vengono interpretati in determinati modi dal database.
Dato che gli attacchi SQLi sono sempre in testa alle classifiche, allo scopo di migliorare le tecniche di difesa, i ricercatori di sicurezza hanno approfondito questo tipo di attacco concentrandosi in particolare su alcune tecniche di detection basate su due paradigmi:
Sei un Esperto di Formazione?
Entra anche tu nel Partner program!
Accedi alla sezione riservata ai Creator sulla nostra Academy e scopri i vantaggi riservati ai membri del Partner program.
Per ulteriori informazioni, scrivici ad [email protected] oppure su Whatsapp al 379 163 8765
Supporta RHC attraverso:
Mentre per le tecniche basate su signature è chiaro che un attacco viene individuato se la signature è presente nel database di firme malevole, per quanto riguarda la detection tramite algoritmi ML c’è molto da dire. Quest’ultima categoria infatti cerca di individuare gli attacchi SQLi grazie all’addestramento cui è stato sottoposto l’algoritmo di ML.
Per cercare di evitare di essere individuati dagli algoritmi di Machine Learning detection gli attaccanti hanno inventato una nuova tecnica di attacco chiamata per l’appunto Adversarial SQLi attack. Cerchiamo ora di capire che cosa sia un Adversarial SQLi Attack, come funziona un attacco di questo tipo e come lo si può contrastare.
Per Adversarial SQLi Attack si intende un attacco di tipo SQL injection costruito appositamente per non essere individuato da modelli di Machine Learning che si occupano di contrastare attacchi SQLi.
In pratica si tratta di un tipo di attacco che sfrutta le vulnerabilità dell’addestramento del modello ML impiegato da strumenti come i Web Application Firewall (WAF) per individuare gli attacchi di tipo SQL Injection.
Consiste nel modificare un payload malevolo (codice malevolo usato per l’attacco SQLi) affinchè il modello di ML utilizzato nei WAF non lo classifichi come tale ma come una richiesta legittima. Ma come è possibile aggirare gli algoritmi di Machine Learning?
Occorre sapere che la maggior parte dei WAF open source, ma spesso anche quelli proprietari, si basano su un set di regole chiamato Core Rule Set (CRS), sviluppato da Open Web Application Security Project (OWASP). OWASP ha anche sviluppato un WAF open source, ModSecurity, che è spesso integrato in altri sistemi. In pratica la maggior parte dei sistemi di detection di SQLi si basa sul CRS. Ma siamo sicuri che ciò sia un bene?
La risposta sembra essere negativa. Secondo le risultanze di alcuni test le regole CRS portano in alcuni casi ad avere un elevato numero di falsi positivi, in pratica richieste legittime vengono scambiate per attacchi di tipo SQLi, provocando disservizio. Inoltre ModSecurity è altamente vulnerabile a attacchi di tipo Adversarial.
Per cercare di risolvere questi problemi sono stati seguiti diversi approcci tra cui quello conosciuto come AdvModSec, che consiste nell’addestrare il modello ML agli attacchi di tipo Adversarial, ovvero a riconoscere le varianti di un attacco SQLi. Il nuovo modello così addestrato sarà capace di riconoscere gli attacchi SQLi e loro varianti e di ridurre il numero di falsi positivi, avendo in definitiva un sistema di detection più efficace.