Improving the WAF with Machine Learning

Cloudflare gestisce 32 milioni di richieste HTTP al secondo ed è utilizzato da oltre il 22% di tutti i siti Web il cui server Web è riconosciuto da W3Techs. Cloudflare è nella posizione unica di proteggere il traffico per 1 proprietà Internet su 5 che gli consente di identificare le minacce man mano che si presentano e tenere traccia di come queste si evolvono e mutano.

Il Web Application Firewall (WAF) è il fulcro degli strumenti di sicurezza di Cloudflare e le regole gestite sono una caratteristica chiave del WAF. Queste sono una raccolta di regole create dal team di analisti di Cloudflare che bloccano le richieste quando mostrano schemi di attacchi noti. Tali regole gestite funzionano molto bene per i modelli di vettori di attacco stabiliti, poiché sono state ampiamente testate per ridurre al minimo sia i falsi negativi (un attacco mancato) che i falsi positivi (il rilevamento di un attacco quando non se ne sta verificando uno). Sul lato negativo, le regole gestite spesso non comprendono le variazioni di attacco (note anche come bypass) poiché le regole statiche basate su espressioni regolari sono intrinsecamente sensibili alle variazioni della firma introdotte, ad esempio, dalle tecniche di fuzzing.

Abbiamo assistito a questo problema quando abbiamo rilasciato le protezioni per log4j. Per alcuni giorni, dopo che la vulnerabilità è stata resa pubblica, abbiamo dovuto aggiornare costantemente le regole per far corrispondere variazioni e mutazioni mentre gli aggressori cercavano di aggirare il WAF. Inoltre, l'ottimizzazione delle regole richiede un intervento umano significativo e di solito funziona solo dopo che i bypass sono stati identificati o addirittura sfruttati, rendendo la protezione reattiva anziché proattiva.

Oggi siamo entusiasti di integrare i set di regole gestiti (come OWASP e Cloudflare Managed) con un nuovo strumento volto a identificare bypass e payload dannosi senza il coinvolgimento umano e prima che si verifichino. I clienti possono ora accedere ai segnali da un modello di machine learning addestrato sul traffico buono/cattivo classificato dalle regole gestite e dai dati aumentati per fornire una protezione migliore su una gamma più ampia di attacchi vecchi e nuovi.

Benvenuto nel nostro nuovo sistema di rilevamento WAF con machine learning.

Il nuovo rilevamento è disponibile in Early Access per i clienti dei piani Enterprise, Pro e Biz. Se sei interessato a provarlo, aggiungiti alla nostra lista d'attesa. In futuro, sarà disponibile automaticamente per i clienti di livello superiore.

Il primo WAF ad apprendimento automatico

Il nuovo sistema di rilevamento integra i set di regole gestiti esistenti fornendo tre vantaggi principali:

  1. Funziona su tutto il tuo traffico. Ad ogni richiesta viene assegnato un punteggio, ad esempio, in base alla probabilità che contenga un attacco SQLi o XSS. Ciò consente una nuova esperienza di analisi WAF che ti consente di esplorare tendenze e modelli nel tuo traffico complessivo.
  2. La frequenza di rilevamento migliora in base al traffico e al feedback passati. Il modello viene addestrato sul traffico buono e cattivo come classificato dalle regole gestite su tutto il traffico Cloudflare. Ciò consente ai piccoli siti di ottenere lo stesso livello di protezione delle più grandi proprietà Internet.
  3. Una nuova definizione di prestazioni. Il motore di machine learning identifica bypass e anomalie prima che si verifichino o vengano identificati dai ricercatori umani.

Il fattore segreto è una combinazione di modelli di machine learning innovativi, un vasto set di dati di addestramento basato sugli attacchi che blocchiamo quotidianamente e tecniche di aumento dei dati, il giusto framework di valutazione e test basato sul principio del test comportamentale e un'ingegneria all'avanguardia che ci consente per valutare ogni richiesta con una latenza trascurabile.

Una nuova esperienza WAF

Il nuovo rilevamento si basa sul paradigma lanciato con Bot Analytics. Seguendo questo approccio, ogni richiesta viene valutata e viene assegnato un punteggio, indipendentemente dal fatto che stiamo intraprendendo o meno delle azioni su di essa. Poiché assegniamo un punteggio a ogni richiesta, gli utenti possono visualizzare l'evoluzione del punteggio nel tempo per l'intero traffico diretto al proprio server.

Customers can use the machine learning categorization engine to identify trends in their traffic.
Clienti possono utilizzare il motore di categorizzazione del machine learning per identificare le tendenze nel loro traffico.

Inoltre, gli utenti possono visualizzare l'istogramma di come sono state valutate le richieste per uno specifico vettore di attacco (come SQLi) e trovare quale punteggio è un buon valore per separare il traffico buono da quello cattivo.

La mitigazione effettiva viene eseguita con regole WAF personalizzate in cui il punteggio viene utilizzato per decidere quali richieste devono essere bloccate. Ciò consente ai clienti di creare regole la cui logica include qualsiasi parametro delle richieste HTTP, inclusi i campi dinamici popolati da Cloudflare, come i punteggi dei bot.

Firewall rule built on waf ml score.
Regola del firewall basata sul punteggio waf ml.

Ora stiamo cercando di estendere questo approccio per lavorare anche sulle regole gestite (OWASP e Cloudflare Managed). I clienti potranno identificare le tendenze e creare regole basate su modelli visibili quando esaminano il loro traffico complessivo; anziché creare regole basate su tentativi ed errori, registrare il traffico per convalidarlo e infine applicare la protezione.

Come funziona?

I rilevamenti basati sul machine learning completano i set di regole gestiti esistenti, come OWASP e Cloudflare Managed. Il sistema si basa su modelli progettati per identificare variazioni di pattern di attacco e anomalie senza la supervisione diretta dei ricercatori o dell'utente finale.

Ad oggi, esponiamo i punteggi per due vettori di attacco: SQL injection e Cross Site Scripting. Gli utenti possono creare regole WAF/Firewall personalizzate utilizzando tre punteggi separati: un punteggio totale (cf.waf.ml.score), uno per SQLi e uno per XSS (cf.waf.ml.score.sqli, cf.waf.ml.score.xss, rispettivamente). I punteggi possono avere valori compresi tra 1 e 99, dove 1 è decisamente dannoso e 99 è traffico valido.

Histogram of the score across all traffic hitting an application.
Istogramma del punteggio di tutto il traffico che riguarda un'applicazione.

Il modello viene quindi addestrato sulla base del traffico classificato dalle regole WAF esistenti e lavora su una versione trasformata della richiesta originale, facilitando l'identificazione delle impronte digitali degli attacchi.

Per ogni richiesta, il modello valuta ogni parte della richiesta in modo indipendente in modo che sia possibile identificare dove sono stati identificati payload dannosi, ad esempio, nel corpo della richiesta, nell'URI o nelle intestazioni.

The detection engine provides a breakdown of where the threats were found (for example, body, URI, headers).
Il motore di rilevamento fornisce un'analisi dettagliata di dove sono state trovate le minacce (ad esempio, corpo, URI, intestazioni).

In teoria sembra facile, ma ci sono una serie di problemi che gli ingegneri di Cloudflare hanno dovuto risolvere per arrivare fin qui. Ciò include come creare un set di dati affidabile, un'etichettatura dei dati scalabile, la selezione della giusta architettura del modello e il requisito per eseguire la categorizzazione per ogni richiesta elaborata dalla rete globale di Cloudflare (ad esempio, 32 milioni di volte al secondo).

Nelle prossime settimane, il team di Engineering pubblicherà una serie di post sul blog che faciliteranno la comprensione di cosa c'è dietro la soluzione.

Cosa ci aspetta

Nei prossimi mesi rilasceremo il nuovo motore di rilevamento per i clienti e raccoglieremo il loro feedback sulle sue prestazioni. Stiamo inoltre pianificando a lungo termine di estendere il motore di rilevamento per coprire tutti i vettori di attacco già identificati dalle regole gestite e di utilizzare gli attacchi bloccati dal modello di machine learning per migliorare ulteriormente i nostri set di regole gestiti.