En ny attackmetod har presenterats för implementationer av HTTP/2-protokollet, vilket underlÀttar genomförandet av attacker för att orsaka överbelastning genom att uttömma serverresurser. SÄrbarheten har kodnamnet MadeYouReset och tillÄter manipulation av kontrollramarna i HTTP/2 för att översvÀmma servern med ett stort antal förfrÄgningar, vilket kringgÄr de instÀllda begrÀnsningarna.
Problemet Àr att en klient kan skapa ett mycket stort antal samtidiga behandlade flöden, oavsett grÀnsen för SETTINGS_MAX_CONCURRENT_STREAMS, genom att ÄterstÀlla varje flöde i ett tidigt skede. En sÄdan ÄterstÀllning gör att klienten inte behöver vÀnta pÄ svar frÄn servern för att skicka en ny förfrÄgan i den etablerade HTTP/2-anslutningen. servern och kan omedelbart skicka ett stort, kontinuerligt flöde av förfrÄgningar, sÄ mycket som bandbredden tillÄter.
Klienten slutar bero pÄ fördröjningar mellan att skicka en förfrÄgan och fÄ svar (RTT, round-trip time) och kan genomföra attacken med minimala overheadkostnader, samtidigt som servern fortsÀtter att spendera resurser pÄ att bearbeta de inkommande förfrÄgningarna. Till exempel tilldelar servern datatyper för nya flöden, analyserar förfrÄgan, packar upp headern och matchar URL:en med resursen. Vid attacker mot bakÄtproxyar kan attacken sprida sig till backend-systemen som proxyn hinner vidarebefordra förfrÄgan till innan den ÄterstÀlls.
SÄrbarheten liknar det tidigare kÀnda problemet Rapid Reset (CVE-2023-44487) och orsakas av en avvikelse i logiken för ÄterstÀllning av flöden, som definieras i specifikationen för HTTP/2-protokollet och implementeras i slutprodukter. Specifikationen förutsÀtter möjligheten för bÄde klienten och servern att ÄterstÀlla flödet nÀr som helst, men i mÄnga implementationer av HTTP/2servrar efter en sÄdan ÄterstÀllning fortsÀtter förfrÄgan att behandlas. Den avgörande skillnaden med den nya attacken Àr att ÄterstÀllningen av förfrÄgans behandling initieras av servern istÀllet för genom att klienten skickar en ram med flaggan RST_STREAM.
Serverinitiativets ÄterstÀllning sker vid mottagande av felaktiga förfrÄgningar, men sÄdana förfrÄgningar avvisas omedelbart utan att pÄbörja en fullstÀndig behandling och utan att vidarebefordras till backend. För att uppnÄ en fullstÀndig förfrÄgningscykel kan angriparen först skicka en korrekt HTTP-förfrÄgan, men dÀrefter skicka en felaktig sekvens av styrningsramar för HTTP/2. En sÄdan aktivitet kommer att leda till att servern börjar behandla förfrÄgan ordentligt, men pÄ grund av ett fel vid behandlingen av de efterföljande ramarna kommer den att ÄterstÀlla strömmen (överföra strömmen med den korrekta förfrÄgan till tillstÄndet RST_STREAM).

Problemets nÀrvaro har bekrÀftats i HTTP-servrar som Apache Tomcat, Netty, Eclipse Jetty, Fastly, varnish, lighttpd och Zephyr RTOS. Problemet upptrÀder Àven pÄ webbplatser och servertjÀnster frÄn Mozilla. Apache httpd, Apache Traffic Server, Node.js, LiteSpeed och HAProxy Àr inte pÄverkade av problemet. Status för sÄrbarheten i nginx Àr inte faststÀlld.
KĂ€lla: opennet.ru
