Vulnerabilitat en protocol HTTP2

El dia 4 d’abril es va publicar una vulnerabilitat en la implementació que fan del protocol HTTP/2 diversos projectes de servidors web que podria usar-se per a bloquejar un equip i per això ser utilitzat per a una denegació de servici (Dos).

Anàlisi

HTTP/2 utilitza camps d’encapçalament en els missatges de sol·licitud i resposta HTTP. Els camps d’encapçalament poden incloure llistes d’encapçalaments, que al seu torn es dividixen en blocs d’encapçalaments. Estos blocs d’encapçalament es transmeten en múltiples fragments a la implementació de destinació. Les trames HTTP/2 CONTINUATION s’utilitzen per a continuar una seqüència de fragments de blocs de camps. S’utilitzen per a dividir blocs d’encapçalament en múltiples trames. Els altres dos tipus de fragments de blocs d’encapçalament són HEADERS o PUSH_PROMISE. Les trames CONTINUATION poden utilitzar-se per a continuar un fragment de bloc de capçalera que no va poder ser transmés per les trames HEADERS o PUSH_PROMISE. Un bloc de capçalera es considera completat quan el servidor rep un indicador de seguiment (flag) END_HEADERS establit. Amb això es pretén indicar que no hi ha més trames CONTINUATION, HEADERS o PUSH_PROMISE. S’ha descobert una vulnerabilitat en diverses implementacions que no limiten la quantitat de trames CONTINUATION que es poden enviar dins d’un mateix flux de dades.

La implementació continuarà rebent trames mentre no s’active indicador de seguiment END_HEADERS durant estes comunicacions. Un atacant pot inicialitzar una connexió a un servidor amb trames HTTP/2 típiques i després rebre trames inicials del servidor. L’atacant pot llavors començar una petició HTTP sense indicadors de seguiment END_HEADERS establits. Això pot permetre a un atacant enviar un flux de trames CONTINUATION al servidor de destinació, la qual cosa pot provocar un bloqueig per falta de memòria, i permetre a un atacant llançar un atac de denegació de servici (Dos) contra un servidor de destinació que utilitze una implementació vulnerable.

A més, un atacant pot enviar trames CONTINUATION codificades amb HPACK Huffman a una implementació de destinació. Això pot causar l’esgotament dels recursos de la CPU i donar lloc a una denegació de servici, ja que la CPU ha de descodificar cada trama codificada que rep.

Ara com ara, s’ha observat que els següents productes s’han vist afectats per esta vulnerabilitat en la seua implementació d’HTTP/2:

 – amphp/http (CVE-2024-2653) 

 – Apatxe HTTP Server (CVE-2024-27316) 

 – Apatxe Tomcat (CVE-2024-24549) 

 – Apatxe Traffic Server (CVE-2024-31309) 

 – Envoy proxy (CVE-2024-27919 i CVE-2024-30255) 

 – Golang (CVE-2023-45288) 

 – h2 Rust crate, nghttp2 (CVE-2024-28182) 

 – Node. js (CVE-2024-27983) 

 – Tempesta FW (CVE-2024-2758) 

Recomanacions

Es recomana revisar les últimes actualitzacions publicades per als productes afectats i que s’actualitze el programari a l’última versió per a mitigar les possibles amenaces.

En cas  que no s’hagen publicat actualitzacions per al producte afectat, com a mitigació de la vulnerabilitat, s’aconsella considerar la desactivació temporal d’HTTP/2 en el servidor.

Referències

https://kb.cert.org/vuls/id/421644

https://thehackernews.com/2024/04/new-http2-vulnerability-exposes-web.html