Una nuova ricerca condotta dall'esperto di sicurezza Bartek Nowotarski ha portato alla luce una potenziale vulnerabilità nel protocollo HTTP/2. Conosciuto come il Diluvio CONTINUAZIONE, questo exploit consente agli aggressori di condurre negazione del servizio (DoS) attacchi inondando un server con frame CONTINUATION.
![Il difetto HTTP2 mette i server Web a rischio di attacchi DoS [CVE-2024-27983]](https://cdn.sensorstechforum.com/wp-content/uploads/2024/04/HTTP2-Flaw-Puts-Web-Servers-at-Risk-of-DoS-Attacks-CVE-2024-27983-1024x585.jpg)
Spiegazione della vulnerabilità CONTINUATION Flood
Il problema risiede nel modo in cui le implementazioni HTTP/2 gestiscono i frame CONTINUATION all'interno di un singolo flusso. Molte implementazioni non riescono a limitare o disinfettare adeguatamente il numero di frame CONTINUATION inviati, consentendo agli aggressori di sopraffare un server con un flusso di frame che può causare l'esaurimento della memoria o arresti anomali.
HTTP/2, come il suo predecessore HTTP/1, utilizza i campi di intestazione all'interno delle richieste e delle risposte. Queste intestazioni sono serializzate in blocchi di intestazione, che vengono poi trasmessi come frammenti di blocco all'interno di frame CONTINUATION.
Come è possibile sfruttare la vulnerabilità
Gli aggressori possono sfruttare questa vulnerabilità inviando un flusso continuo di frame CONTINUATION senza il flag END_HEADERS impostato, causando l'analisi e l'archiviazione da parte del server di una quantità eccessiva di dati di intestazione in memoria.
Questa vulnerabilità rappresenta una grave minaccia, poiché una singola macchina o una connessione TCP possono interrompere la disponibilità del server, portando a arresti anomali o peggioramento delle prestazioni. L'attacco potrebbe non essere visibile nei log di accesso HTTP, rendendo difficile il rilevamento.
Implementazioni interessate
Sono interessate diverse implementazioni HTTP/2, inclusi progetti come Apache HTTP Server, Node.js, e Golang. Si consiglia agli utenti di aggiornare il software interessato per mitigare i rischi. Se una correzione non è disponibile, disabilitare temporaneamente HTTP/2 può fornire protezione contro questo exploit.
Di seguito sono riportati più elenchi CVE che evidenziano la vulnerabilità in varie implementazioni, come da Centro di Coordinamento CERT consultivo.
CVE-2024-27983
Un utente malintenzionato può rendere non disponibile il server HTTP/2 Node.js inviando una quantità limitata di pacchetti di frame HTTP/2 contenenti alcuni frame HTTP/2. Il difetto può lasciare dati all'interno nghttp2 memoria dopo un ripristino. Ciò potrebbe accadere quando le intestazioni con frame HTTP/2 CONTINUATION vengono inviate al server e la connessione TCP viene chiusa improvvisamente dal client, attivando il distruttore Http2Session mentre i frame di intestazione sono ancora in fase di elaborazione, causando una condizione di gara.
CVE-2024-27919
Dell'inviato oghttp il codec non riesce a reimpostare una richiesta quando vengono superati i limiti della mappa di intestazione. Ciò consente a un utente malintenzionato di inviare una sequenza di frame CONTINUATION senza il bit END_HEADERS impostato, portando ad un consumo illimitato di memoria.
CVE-2024-2758
I limiti di velocità del FW Tempesta non sono abilitati per impostazione predefinita. Sono impostati troppo grandi per catturare attacchi con frame CONTINUATION vuoti o troppo piccoli per gestire in modo appropriato le normali richieste HTTP.
CVE-2024-2653
amphp/http raccoglie i frame HTTP/2 CONTINUATION in un buffer illimitato e non controlla il limite della dimensione dell'intestazione finché non riceve il flag END_HEADERS, con conseguente memoria esaurita (OOM) schianto. amphp/http-client e amphp/server-http sono influenzati indirettamente se utilizzati con una versione senza patch di amphp/http. Versioni precedenti di amphp/http-client con supporto HTTP/2 (v4.0.0-rc10 a 4.0.0) sono anche direttamente interessati.
CVE-2023-45288
I pacchetti Go rete/http e rete/http2 non limitare il numero di frame CONTINUATION letti per una richiesta HTTP/2, consentendo a un utente malintenzionato di fornire un set di intestazioni eccessivamente grande per una singola richiesta, portando ad un consumo eccessivo della CPU.
CVE-2024-28182
Un'implementazione che utilizza il file nghttp2 la libreria continuerà a ricevere frame CONTINUATION e non richiamerà l'applicazione per consentire la visibilità di queste informazioni prima di reimpostare il flusso, con conseguente a Negazione del servizio (DoS) vulnerabilità.
CVE-2024-27316
I frame HTTP/2 CONTINUATION senza il flag END_HEADERS impostato possono essere inviati continuamente da un utente malintenzionato a un'implementazione Apache Httpd, che non riesce a risolvere anticipatamente la richiesta.
CVE-2024-31309
Un attacco DoS HTTP/2 CONTINUATION può far sì che Apache Traffic Server consumi più risorse sul server. Versioni da 8.0.0 attraverso 8.1.9 e da 9.0.0 attraverso 9.2.3 sono colpiti.
CVE-2024-30255
Lo stack di protocolli HTTP/2 nelle versioni Envoy 1.29.2 o precedente è vulnerabile all'esaurimento della CPU a causa di un'ondata di frame CONTINUATION. Il codec HTTP/2 di Envoy consente al client di inviare un numero illimitato di frame CONTINUATION, anche dopo aver superato i limiti della mappa di intestazione di Envoy. Ciò consente a un utente malintenzionato di inviare una sequenza di frame CONTINUATION senza il bit END_HEADERS impostato, causando un consumo approssimativo dell'utilizzo della CPU 1 core per 300 Mbit/s di traffico.

