Ho già parlato in diverse occasioni di attacchi del tipo SQL Injection e questo non è che una evoluzione, ma prima di proseguire e per rinfrescarci la memoria potrebbe essere utile andare a rivedere questi articoli: SQL Injection: di che si tratta?, SQL Injection, sempre attuale nonostante l'età e Come ingannare le difese per fare un attacco SQL con JSON.
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:
- detection tramite signature;
- Machine Learning detection.
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.
Cominciamo come al solito dall'inizio, la definizione di Adversarial SQLi Attack.
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 aggirere 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.
Ma come è possibile difendersi da questo tipo di attacco?
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 voro varianti e a ridurre il numero di falsi positivi, avendo in definitiva un sistema di detection più efficace.
Alessandro RUGOLO
Per approfondire:
- https://arxiv.org/abs/2308.04964
- https://owasp.org/www-project-modsecurity/
- https://dl.acm.org/doi/10.1109/TIFS.2024.3350911
- https://davideariu.substack.com/p/the-rise-and-fall-of-modsecurity
- https://www.sciencedirect.com/science/article/abs/pii/S0065245815000649