Una nuova ricerca ha scoperto che il frame CONTINUATION del protocollo HTTP/2 può essere sfruttato per condurre attacchi denial-of-service (DoS). La tecnica, denominata HTTP/2 CONTINUATION Flood, è stata individuata dal ricercatore di sicurezza Bartek Nowotarski e segnalata al CERT Coordination Center (CERT/CC) il 25 gennaio 2024.
Molte implementazioni di HTTP/2 non limitano o sanificano adeguatamente la quantità di frame CONTINUATION inviati all’interno di un singolo flusso. Questo può permettere a un attaccante di inviare una serie di frame CONTINUATION che, sebbene non vengano aggiunti alla lista delle intestazioni in memoria, vengono comunque elaborati e decodificati dal server, o vengono aggiunti alla lista delle intestazioni, causando un crash per esaurimento della memoria (OOM).
Il frame CONTINUATION è utilizzato per continuare una sequenza di frammenti di blocco delle intestazioni. Una quantità illimitata di frame CONTINUATION può essere inviata, a patto che il frame precedente sia sullo stesso flusso e sia un frame HEADERS, PUSH_PROMISE o CONTINUATION senza il flag END_HEADERS impostato.
Questa vulnerabilità, legata alla gestione errata di HEADERS e più frame CONTINUATION, può creare una condizione di DoS. In pratica, un attaccante può iniziare un nuovo flusso HTTP/2 contro un server bersaglio utilizzando un’implementazione vulnerabile e inviare frame HEADERS e CONTINUATION senza il flag END_HEADERS impostato, creando un flusso infinito di intestazioni che il server HTTP/2 deve analizzare e memorizzare.
Gli impatti variano a seconda dell’implementazione, ma possono includere crash immediati dopo l’invio di un paio di frame HTTP/2, crash per esaurimento della memoria, o esaurimento della CPU, influenzando così la disponibilità del server.
Progetti colpiti da questa vulnerabilità includono amphp/http (CVE-2024-2653), Apache HTTP Server (CVE-2024-27316), Apache Tomcat (CVE-2024-24549), Apache Traffic Server (CVE-2024-31309), Envoy proxy (CVE-2024-27919 e CVE-2024-30255), Golang (CVE-2023-45288), h2 Rust crate, nghttp2 (CVE-2024-28182), Node.js (CVE-2024-27983) e Tempesta FW (CVE-2024-2758).
Si raccomanda agli utenti di aggiornare il software interessato all’ultima versione per mitigare le potenziali minacce. In assenza di una soluzione, si consiglia di considerare la disattivazione temporanea di HTTP/2 sul server.