Zranitelnost ve implementacích protokolu HTTP/2, která usnadňuje provádění DoS útoků

Byla představena nová technika útoku na implementace protokolu HTTP/2, která zjednodušuje provádění útoků na zablokování služeb pomocí vyčerpání serverových zdrojů. Zranitelnost dostala kódové jméno MadeYouReset a umožňuje prostřednictvím manipulace s řídícími rámci HTTP/2 zahlcovat server velkým množstvím požadavků, obcházející stanovená omezení.

Podstatou problému je, že klient může vytvořit velmi velké množství současně zpracovávaných toků, bez ohledu na limit SETTINGS_MAX_CONCURRENT_STREAMS, a resetovat každý tok v počáteční fázi. Takový reset znamená, že k odeslání nového požadavku v rámci stanoveného spojení HTTP/2 nemusí klient čekat na odpověď od serveru a může okamžitě směrovat velký nepřetržitý tok požadavků, jak jen to umožňuje šířka pásma.

Klient přestává být závislý na zpožděních mezi odesíláním požadavku a získáváním odpovědi (RTT, round-trip time) a může provést útok s minimálními náklady, zatímco server stále vyčerpává zdroje na zpracování příchozích požadavků. Například server provádí alokaci datových struktur pro nové toky, analýzu požadavku, dekompresi hlavičky a přiřazení URL ke zdroji. Při útoku na reverzní proxy může být útok rozšířen na backendy, na které proxy stihne přesměrovat požadavek před jeho resetováním.

Zranitelnost připomíná dříve známý problém Rapid Reset (CVE-2023-44487) a je způsobena rozporami v logice resetování toků definované ve specifikaci protokolu HTTP/2 a realizované v koncových produktech. Ve specifikaci je stanoveno, že klient a server mohou resetovat tok kdykoli, ale v mnoha implementacích HTTP/2servery po takovém resetu požadavek pokračuje ve zpracování. Klíčovým rozdílem nového útoku je to, že resetování zpracování požadavku probíhá na iniciativu serveru, nikoli prostřednictvím odeslání rámce s flagem RST_STREAM ze strany klienta.

Server-initiated resets occur when incorrect requests are received, but such requests are immediately discarded without starting full processing or passing them to the backend. To achieve a complete processing cycle, an attacker can initially send a valid HTTP request and then follow it with an incorrect sequence of control frames in HTTP/2. Such activity will lead to the server starting to process the request fully, but then due to an error in processing the subsequent frames, it will reset the stream (changing the stream with the valid request to RST_STREAM state).

Zranitelnost ve implementacích protokolu HTTP/2, která usnadňuje provádění DoS útoků

The issue has been confirmed in HTTP servers such as Apache Tomcat, Netty, Eclipse Jetty, Fastly, Varnish, Lighttpd, and Zephyr RTOS. The problem is also observed on Mozilla websites and server services. Apache httpd, Apache Traffic Server, Node.js, LiteSpeed, and HAProxy are not affected by the issue. The status of the vulnerability in Nginx is undetermined.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster