HTTP/2 è una revisione del protocollo HTTP progettata per migliorare le prestazioni e l'efficienza del trasferimento di dati su Internet. Le sue caratteristiche principali includono il multiplexing, che consente di inviare più richieste e risposte contemporaneamente su una singola connessione TCP, la compressione degli header per ridurre il carico di dati trasmessi, il concetto di server push per inviare risorse aggiuntive prima che siano richieste esplicitamente, la prioritizzazione dei flussi per gestire in modo efficiente le risorse, l'uso raccomandato di TLS per una maggiore sicurezza.
In generale, HTTP/2 mira a fornire un caricamento più veloce delle pagine Web e una migliore esperienza utente rispetto al suo predecessore, HTTP/1.1.
Come funziona l'attacco DoS che blocca i siti Web
Il ricercatore Barket Nowotarski ha scoperto una serie di vulnerabilità in HTTP/2 che possono portare al blocco di un intero sito Web. Si tratta insomma di problematiche che possono facilitare un attacco DoS (Denial of Service) in grande stile, che può andare a segno semplicemente stabilendo una singola connessione TCP verso il server Web oggetto dell'aggressione.
CONTINUATION Flood è l'appellativo assegnato alle vulnerabilità scoperte in HTTP/2 nel loro complesso. I messaggi HTTP/2 includono sezioni header e trailer suddivise in blocchi. Questi blocchi possono essere frammentati su più frame per la trasmissione: per unire i flussi sono utilizzati i cosiddetti frame CONTINUATION.
L'omissione di controlli adeguati sul contenuto dei frame in molte implementazioni, consente ai criminali informatici di inviare una stringa di frame estremamente lunga, non impostando il flag END_HEADERS
. Questo genere di comportamento può portare a crash del server dovuti all'esaurimento della memoria o all'uso anomalo delle risorse della CPU durante l'elaborazione dei frame in eccesso.
Nowotarski spiega che le implementazioni esposte al fenomeno del memory leak semplicemente non limitano la dimensione della sequenza di header costruiti ricorrendo al frame CONTINUATION di HTTP/2.
Fonte dell'immagine: Barket Nowotarski.
Quali software sono vulnerabili all'attacco CONTINUATION Flood
Il problema di sicurezza scoperto nelle implementazioni di HTTP/2 riguarda potenzialmente molteplici software. Tra le varie soluzioni interessate ci sono ad esempio Web server e proxy come Apache httpd e Apache Traffic Server (CVE-2024-27316 e CVE-2024-31309).
Le falle CONTINUATION Flood, tuttavia, affliggono anche l'utilizzo del protocollo HTTP/2 in Node.js (CVE-2024-27983), l'anti DDoS Tempesta FW (CVE-2024-2758), i pacchetti net/http
e net/http2
del linguaggio Go (CVE-2023-45288), il client HTTP asincrono per PHP basato su Revolt amphp/http (CVE-2024-2653), la libreria nghttp2 (CVE-2024-28182), il proxy Envoy (CVE-2024-30255 e CVE-2024-27919).
L'impatto delle vulnerabilità è grave: al momento, i fornitori di soluzioni software e gli sviluppatori che hanno confermato di essere interessati da almeno uno dei CVE sopra menzionati sono Red Hat, SUSE Linux, Arista Networks, il progetto Apache HTTP Server, nghttp2, Node.js, AMPHP e i gestori del linguaggio di programmazione Go.
Secondo Nowotarski il problema sarebbe ben più grave dell'attacco HTTP/2 Rapid Reset venuto a galla a ottobre 2023. Dato che Cloudflare Radar stima i dati del traffico HTTP sopra il 70% di tutti i trasferimenti Internet, l'esposizione alle aggressioni DoS p significativa a livello globale: in molti casi basta una sola connessione TCP per bloccare il server.
Il ricercatore avverte che il problema in questione sarebbe complesso da diagnosticare e attenuare per tutti gli amministratori non in possesso di una conoscenza adeguata di HTTP/2. Ciò perché le richieste malevole non sarebbero visibili nei log, a meno che non ci si serva dell'analisi avanzata a livello di frame, cosa che nella maggior parte dei casi non avviene.
A questo punto, è fondamentale aggiornare i server e le librerie interessate prima che le vulnerabilità CONTINUATION Flood inizino ad essere attivamente sfruttate.
Credit immagine in apertura: iStock.com – PUGUN SJ