Come ingannare le difese per fare un attacco SQL con JSON

(di Alessandro Rugolo)
05/04/24

Come abbiamo visto precedentemente, le SQLi sono ancora temibili nonostante l'età. Se qualcuno si fosse perso le informazioni base su SQLi gli consiglio di dare uno sguardo al primo articolo: Attacco SQL injection: di che si tratta?

Naturalmente l'industria della sicurezza ha sviluppato degli strumenti per combattere le SQLi, si tratta di applicativi capaci di filtrare le richieste web e determinare con buona approssimazione se si tratta di richieste lecite o di tentativi di attacco.

Naturalmente anche gli hacker non si sono lasciati scoraggiare ed hanno trovato tutta una serie di espedienti per "bypassare" le difese, tra questi è di moda l'attacco chiamato JSON - SQL bypass.

Vediamo di capire di che si tratta, ma prima due parole su JSON.

JSON è un formato per lo scambio di dati basato su un sottoinsieme del linguaggio di programmazione JavaScript, in effetti è l'acronimo di JavaScript Object Notation.

Nel tempo JSON è diventato il formato più utilizzato nello scambio di dati e i database hanno incluso in SQL il supporto a JSON. La stessa cosa non è accaduta a molti strumenti di sicurezza che conseguentemente non sono in grado di identificare tentativi di attacco SQLi realizzati con questa tecnica. 

Se consideriamo per esempio una applicazione web protetta da un WAF e proviamo a fare un attacco SQLi per cercare di esfiltrare dei dati cui noi non abbiamo l'accesso, i controlli del WAF in linea di massima riescono ad individuare la richiesta impropria e a bloccare il tentativo di attacco. Se però si tenta un attacco utilizzando una stringa nel formato JSON, il WAF viene ingannato non essendo in grado di capire che la stringa contiene un comando SQL mentre il database è capace di interpretare correttamente il comando in quanto supporta la sintassi JSON.

Il risultato è che i principali produttori di WAF (Palo Alto Networks, Amazon Web Services, Cloudflare, F5, and Imperva) nel 2022 sono dovuti correre ai ripari inserendo delle regole per garantire il controllo della sintassi JSON.

A scoprire questo nuovo tipo di attacco è stato il team di ricerca TEAM82, di CLAROTY.

Ora, dato che si tratta di un attacco abbastanza recente, suggerisco a tutti coloro che per proteggere i propri servizi WEB utilizzano un WAF di far effettuare dei test specifici per verificare se sono protetti da JSON SQL Bypass.

Saranno in tanti a pensare che non c'è bisogno di allarmarsi in quanto si tratta di un attacco molto complesso da condurre: a questi ultimi consiglio di fare molta attenzione invece in quanto SQLMap permette di cercare automaticamente siti vulnerabili a JSON SQL Bypass attack. 

SQLMap, strumento opensource di facile utilizzo... No, questa è un'altra storia!

Per approfondire:

- https://www.picussecurity.com/resource/blog/waf-bypass-using-json-based-...

- https://www.json.org/json-it.html

- https://claroty.com/team82/research/js-on-security-off-abusing-json-base...