HTTP/2 Rapid Reset: il trucco che ha prodotto i DDoS più grandi di sempre

Aprendo e annullando subito migliaia di richieste HTTP/2, gli attaccanti hanno generato attacchi da centinaia di milioni di richieste al secondo con poche migliaia di macchine. La falla è nel protocollo: tutti i server HTTP/2 vanno aggiornati.

HTTP/2 Rapid Reset: il trucco che ha prodotto i DDoS più grandi di sempre

Il 10 ottobre Google, Cloudflare e Amazon hanno rivelato insieme una tecnica DDoS che da fine agosto ha prodotto gli attacchi a livello applicativo più grandi mai registrati. Google ha misurato un picco di 398 milioni di richieste al secondo. Cloudflare ne ha contate oltre 201 milioni, generate da una botnet di appena 20.000 macchine circa. La tecnica si chiama HTTP/2 Rapid Reset ed è registrata come CVE-2023-44487.

Quel rapporto tra macchine e richieste è il dettaglio che deve farti alzare la testa. Le botnet di oggi contano spesso centinaia di migliaia o milioni di dispositivi.

Il meccanismo sfrutta una caratteristica legittima del protocollo. HTTP/2 permette di inviare molte richieste contemporanee sulla stessa connessione, ciascuna in un proprio flusso, e di annullarle con un frame RST_STREAM. Il limite al numero di flussi aperti insieme non conta quelli annullati. L’attaccante apre una richiesta, la annulla subito e ne apre un’altra, in un ciclo continuo. Il server deve comunque cominciare a elaborare ciascuna richiesta, mentre il client non aspetta nessuna risposta. Con poche connessioni si genera un carico enorme.

Un problema del protocollo

Non c’è un singolo prodotto da accusare: qualunque server o proxy che supporta HTTP/2 può essere colpito. Stanno rilasciando correzioni nginx, Apache con httpd e Tomcat, Microsoft IIS, Envoy, HAProxy, Go, Node.js, Netty e i principali bilanciatori di carico, e l’elenco si allunga di giorno in giorno.

Aggiorna server web, reverse proxy e runtime applicativi alle versioni che correggono la CVE-2023-44487 appena sono disponibili. Con nginx tieni valori prudenti per keepalive_requests e per http2_max_concurrent_streams, che di default vale 128. Configura limiti di frequenza per connessione e per indirizzo IP, e la chiusura delle connessioni che annullano troppi flussi. Se il sito sta dietro una CDN o un servizio anti-DDoS, chiedi al fornitore se ha già applicato le mitigazioni. Su un servizio interno che non ha bisogno di HTTP/2 puoi anche disattivarlo finché non hai aggiornato.

I grandi fornitori hanno assorbito questi attacchi con infrastrutture distribuite su tutto il pianeta. Il tuo server, da solo, cadrebbe con una frazione minima di quel traffico.

Condividi LinkedIn X Telegram

Continua a leggere