HTTP/2 Bomb ohrožuje servery Nginx, Apache, IIS, Envoy a Cloudflare Pingora

Sdílet

HTTP/2 Bomba Autor: Root.cz s využitím Duck.ai

Nově odhalená chyba nazvaná HTTP/2 Bomb umožňuje vzdálený útoku typu odmítnutí služby (DoS). Nachází se ve výchozích konfiguracích protokolu HTTP/2 u nejrozšířenějších webových serverů jako jsou Nginx, Apache, Microsoft IIS, Envoy a Cloudflare Pingora. Útočník může s její pomocí během několika sekund vyčerpat desítky gigabajtů paměti serveru.

Tuto zranitelnost objevil Quang Luong pomocí nástroje Codex a kombinace dvou technik, které jsou bezpečnostní komunitě známy již téměř deset let: kompresní bomby HPACK a blokování útoku typu Slowloris. Útok je zajímavý jejich kombinací, způsobem jejich zneužití a obrovským zesilujícím efektem.

HPACK umožňuje efektivní kompresi hlaviček s uchováním stavu v protokolu HTTP/2. Každý účastník komunikace udržuje dynamickou tabulku naposledy použitých hlaviček, odesílatel může hlavičku odeslat pouze jednou a následně na ni odkazovat pomocí jednobajtového indexu. Příjemce pak při přijetí odkazů skládá celou zamýšlenou hlavičku v paměti.

Útok tedy nejprve naplní tabulku hlavičkou a poté v jediném požadavku odešle tisíce jednobajtových indexovaných odkazů, což útočníka stojí pouze jeden bajt přenesených dat, zatímco server je nucen alokovat na každý odkaz přibližně 70 bajtů (Nginx, IIS, Pingora) až přibližně 4 000 bajtů (Apache, Envoy).

Druhou zneužitou komponentou je pak řízení toku v HTTP/2, kde může klient nastavit okno řízení na velikost nula bajtů, což brání serveru v dokončení odpovědi. Proud jednobajtových zpráv WINDOW_UPDATE pak neustále resetuje časový limit odesílání, čímž zablokuje každé přidělení paměti na místě tak dlouho, jak si útočník přeje. To se projeví jako trvalé obsazení alokované paměti na serveru. Bylo demonstrováno, že je tak možné zabrat desítky gigabajtů paměti během několika sekund.

Opravy jsou dostupné v Nginx 1.29.8+ a Apache mod_http2 v2.0.41. Tvůrci ostatních zranitelných serverů zatím opravy nevydali. Můžete na nich tedy dočasně vypnout podporu HTTP/2. Je možné také nastavit limity procesům pomocí ulimit nebo omezit třeba jednotlivé kontejnery a zabránit jim v přílišném čerpání paměti serveru.

Našli jste v článku chybu?

Autor zprávičky

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.