Është paraqitur një teknikë e re sulmi ndaj implementimeve të protokollit HTTP/2, që thjeshton realizimin e sulmeve për të shkaktuar mosfunksionim përmes shterimit të burimeve të serverit. Vulnerabiliteti mori emrin kodor MadeYouReset dhe lejon, përmes manipulimeve të kadrove kontrolluese të HTTP/2, të mbushen serverët me një numër të madh kërkesash duke anashkaluar kufizimet e vendosura.
Thelbi i problemit është se klienti mund të krijojë një numër shumë të madh rrjedhash që përpunohen paralelisht, pavarësisht kufirit SETTINGS_MAX_CONCURRENT_STREAMS, duke e rikthyer çdo rrjedh në fazën fillestare. Një rikthim i tillë çon në atë që për të dërguar një kërkesë të re në lidhjen e vendosur HTTP/2, klienti nuk nevojitet të presë përgjigjen nga сервера dhe mund të dërgojë menjëherë një fluks të madh kërkesash të pandërprera, sa më shumë lejon kapaciteti i kanalit të komunikimit.
Klienti nuk vares nga vonesat mes dërgimit të kërkesës dhe marrjes së përgjigjes (RTT, koha e kthimit) dhe mund të realizojë një sulm me shpenzime minimale, ndërsa serveri vazhdon të shpenzojë burime për të përpunuar kërkesat e ardhura. Për shembull, serveri kryen alokimin e strukturave të dhënash për rrjedhat e reja, analizimin e kërkesës, shpërbërjen e kokës dhe përputhjen e URL-së me burimin. Në sulmet ndaj proxy-ve të pasme, sulmi mund të përhapet në backend-in ku proxy-u arrin të redirektojë kërkesën para se të rikthehet.
Vulnerabiliteti i ngjan problemit të njohur më parë Rapid Reset (CVE-2023-44487) dhe shkaktohet nga mospërputhja e logjikës së rikthimeve të rrjedhave, të përcaktuar në specifikimin e protokollit HTTP/2 dhe të realizuar në produktet përfundimtare. Në specifikim parashikohet mundësia e rikthimit të rrjedhës nga klienti dhe serveri në çdo moment, por në shumë implementime HTTP/2-serverësh pas një rikthimi të tillë kërkesa vazhdon të përpunojë. Dallimi kyç i sulmit të ri është se rikthimi i përpunimit të kërkesës kryhet në iniciativën e serverit, dhe jo përmes dërgimit të një kadrove nga klienti me flamurin RST_STREAM.
Rivë këndvështrimi i serverit ndodh kur janë të pranuara kërkesa të papregatuara, por kërkesat e tilla hidhen menjëherë pa filluar përpunimi i tyre të plotë dhe pa u dërguar në backend. Për të arritur një cikël të plotë të përpunimit të kërkesës, sulmuesi fillimisht mund të dërgojë një kërkesë HTTP të saktë, por më pas të dërgojë një sekuencë të papërshtatshme të kuadrove të kontrollit HTTP/2. Aktiviteti i tillë do të çojë në përpunimin e plotë të kërkesës nga serveri, por më pas për shkak të një gabimi gjatë përpunimit të kuadrove që vijnë pas do të kthejë rrjedhën në gjendjen RST_STREAM.

Problemi është konfirmuar në serverët HTTP si Apache Tomcat, Netty, Eclipse Jetty, Fastly, varnish, lighttpd, Zephyr RTOS. Problemi shfaqet gjithashtu në faqet dhe shërbimet serverike të Mozilla. Apache httpd, Apache Traffic Server, Node.js, LiteSpeed dhe HAProxy nuk preken nga problemi. Statusi i pranishëm i dobësi në nginx nuk është i përcaktuar.
Burimi: opennet.ru
