Nový výzkum zjistil, že rámec CONTINUATION v protokolu HTTP/2 lze zneužít k útokům typu DoS (denial-of-service).
Tuto techniku označil bezpečnostní výzkumník Bartek Nowotarski kódovým názvem HTTP/2 CONTINUATION Flood a 25. ledna 2024 problém nahlásil koordinačnímu centru CERT (CERT/CC).
„Mnoho implementací protokolu HTTP/2 řádně neomezuje nebo nesanitizuje množství rámců CONTINUATION odesílaných v rámci jednoho streamu,“ uvedl CERT/CC 3. dubna 2024.
„Útočník, který může odesílat pakety na cílový server, může odeslat proud rámců CONTINUATION, které nebudou připojeny k seznamu záhlaví v paměti, ale server je přesto zpracuje a dekóduje, nebo je připojí k seznamu záhlaví, což způsobí pád mimo paměť (OOM).“
Stejně jako v protokolu HTTP/1 používá protokol HTTP/2 pole hlaviček v rámci požadavků a odpovědí. Tato pole hlaviček mohou obsahovat seznamy hlaviček, které jsou zase serializovány a rozděleny do bloků hlaviček. Bloky záhlaví jsou pak rozděleny do blokových fragmentů a přenášeny v rámci rámců HEADERS nebo tzv. rámců CONTINUATION.
„Rámec CONTINUATION (typ=0x9) se používá k pokračování sekvence fragmentů bloků záhlaví,“ uvádí se v dokumentaci k RFC 7540.
„Lze odeslat libovolný počet rámců CONTINUATION, pokud je předchozí rámec ve stejném proudu a je rámcem HEADERS, PUSH_PROMISE nebo CONTINUATION bez nastaveného příznaku END_HEADERS.“
Poslední rámec obsahující záhlaví bude mít nastaven příznak END_HEADERS, který signalizuje vzdálenému koncovému bodu, že se jedná o konec bloku záhlaví.
Podle Nowotarskiho představuje CONTINUATION Flood třídu zranitelností v rámci několika implementací protokolu HTTP/2, které představují vážnější hrozbu ve srovnání s útokem Rapid Reset, který vyšel najevo v říjnu 2023.
„Jediný stroj (a v některých případech i pouhé jedno spojení TCP nebo hrstka rámců) má potenciál narušit dostupnost serveru, což může mít různé důsledky, od zhroucení serveru až po podstatné snížení výkonu,“ uvedl výzkumník. „Pozoruhodné je, že požadavky, které představují útok, nejsou viditelné v protokolech o přístupu HTTP.“
Jádro zranitelnosti souvisí s nesprávným zpracováním rámců HEADERS a vícenásobných rámců CONTINUATION, které připravují půdu pro stav DoS.
Jinými slovy, útočník může zahájit nový proud HTTP/2 proti cílovému serveru používajícímu zranitelnou implementaci a odeslat rámce HEADERS a CONTINUATION bez nastaveného příznaku END_HEADERS, čímž vytvoří nekonečný proud hlaviček, které by server HTTP/2 musel analyzovat a uložit do paměti.
Ačkoli se přesný výsledek liší v závislosti na implementaci, dopady se pohybují od okamžitého pádu po odeslání několika rámců HTTP/2 a pádu mimo paměť až po vyčerpání procesoru, což ovlivní dostupnost serveru.
„RFC 9113 […] zmiňuje několik bezpečnostních problémů, které mohou vzniknout, pokud nejsou rámce CONTINUATION správně zpracovány,“ řekl Nowotarski.
„Zároveň nezmiňuje konkrétní případ, kdy jsou rámce CONTINUATION odesílány bez závěrečného příznaku END_HEADERS, což může mít důsledky pro postižené servery.“
Problém se týká několika projektů, například 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 a CVE-2024-30255), Golang (CVE-2023-45288), h2 Rust crate, nghttp2 (CVE-2024-28182), Node.js (CVE-2024-27983) a Tempesta FW (CVE-2024-2758).
Uživatelům se doporučuje aktualizovat postižený software na nejnovější verzi, aby se zmírnily potenciální hrozby. Pokud oprava neexistuje, doporučuje se zvážit dočasné zakázání protokolu HTTP/2 na serveru.
Zdroj: thehackernews.com
Zdroj: IT SECURITY NETWORK NEWS