Informacionet mbi metodën e sulmit "Continuation flood", e cila prek implementime të ndryshme të protokollit HTTP/2, përfshirë Apache httpd, Apache Traffic Server, Node.js, oghttp, Go net/http2, Envoy, oghttp dhe nghttp2. Kjo dobësi mund të përdoret për sulme ndaj serverëve që mbështesin HTTP/2.0 dhe, në varësi të implementimit, çon në shterimin e memories (ndalimi i përpunimit të kërkesave ose përfundimi në mënyrë emergjente i proceseve) ose krijimin e një ngarkese të lartë në CPU (ngadalësimi i përpunimit të kërkesave). Sipas mendimit të kërkuesit që zbuloi këtë dobësi, problemi i zbuluar është më i rrezikshëm se dobësia "Rapid Reset" e zbuluar vitin e kaluar, e cila u përdor për të kryer sulmet më të mëdha DDoS në atë kohë.
Niveli i lartë i rrezikut shpjegohet nga fakti se për të penguar funksionimin serverë, për të çuar në një përfundim emergjent ose për të ulur ndjeshëm performancën, mjafton të krijohet një flux i kërkesave të dizajnuara veçmas nga një kompjuter i zakonshëm. Në disa raste, për të kryer sulmin mjafton madje një lidhje TCP. Në këtë rast, trafiku i lidhur me sulmin nuk dallohet fare në log-et krahasuar me kërkesat e zakonshme të përdoruesve.
Dobësia shkaktohet nga veçoritë e përpunimit të frame-ve HEADERS dhe CONTINUATION në kërkesat e protokollit HTTP/2. Frames HEADERS përdoren në HTTP/2 për të transmetuar titujt HTTP, ndërsa frames CONTINUATION përdoren për të ndarë dërgimin e titujve HTTP në disa faza (për shembull, kur titujt nuk përshtaten në një frame ose kur fillimisht duhet të dërgohen tituj që mund të plotësohen në këtë fazë, dhe më pas të dërgohen titujt të cilët nuk mund të caktohen ende). Kur titujt dërgohen në disa faza, më parë dërgohet një frame HEADERS pa flamurin END_HEADERS, pasuar nga disa frames CONTINUATION me titujt shtesë dhe përfundimi i listës ndodh me një frame CONTINUATION me flamurin END_HEADERS.
Metoda e sulmit përfshin dërgimin e një fluksi të pandërprerë të frames CONTINUATION pa vendosur flamurin END_HEADERS. Aktivitet të tillë çon në dërgimin e server një numri të madh të titujve që serveri mban në memorie deri sa memoria e disponueshme për procesin të jetë e shpenzuar. Për të krijuar një ngarkesë të lartë në CPU, përveç shpenzimit të memories, sulmuesi mund të përfitojë nga kompresimi i përmbajtjes së kadrove CONTINUATION duke përdorur formatin HPACK, analiza e së cilës kërkon llogaritje. Në implementimet e protokollit HTTP/1.1, për të mbrojtur nga mbingarkesa e serverit me tituj, është aplikuar një kufizim mbi madhësinë e titujve dhe një kohë e çakorduar për dërgimin e lidhjes. Për HTTP/2, për shkak të komplikuarësisë së protokollit, shumë implementime nuk parashikuan metoda të tilla mbrojtjeje nga dërgimi i pafund i titujve.
Kjo vulnerabilitet paraqet një rrezik më të madh për përdoruesit e Node.js (CVE-2024-27983), pasi kjo implementim lejon që të arrihet rrëzimi duke dërguar vetëm disa kadra në server. Për shkak të një gjendje garash në Node.js, për të shkaktuar një mbyllje të paplanifikuar përmes aktivizimit të kontrollit Assert, është e mjaftueshme të mbyllen lidhjet gjatë dërgimit të një rrjedhe titujsh të papërfunduar (rrëzim nëse gjatë mbylljes së lidhjeve ende nuk ka mbërritur një kadër CONTINUATION me flagun END_HEADERS). Vulnerabiliteti është eliminuar në Node.js 18.20.1, 21.7.2 dhe 20.12.1, si dhe në versionet më të fundit të biblioteka llhttp dhe undici. Në versionet e reja të Node.js është eliminuar gjithashtu një vulnerabilitet më pak të rrezikshëm (CVE-2024-27982) në klasën "request smuggling", e cila lejon, përmes manipulimit të vlerës "Content Length", të futet në përmbajtjen e kërkesave të përdoruesve të tjerë, që përpunohen në të njëjtin rrjedh midis frontend-it dhe backend-it.
Vulnerabilitetet që lidhen me trajtimin e CONTINUATION në implementime të tjera të HTTP/2.0:
- oghttp (CVE-2024-27919) â konsum tĂ« pakufizuar tĂ« memories.
- Tempesta FW (CVE-2024-2758) â anashkalimi i kufizimeve.
- Biblioteka PHP amphp/http, amphp/http-client dhe amphp/http-server (CVE-2024-2653) â konsum tĂ« pakufizuar tĂ« memories, deri nĂ« shpenzimin e plotĂ« tĂ« memories sĂ« disponueshme.
- Paketa Go net/http (CVE-2023-45288) â krijimi i njĂ« ngarkese tĂ« lartĂ« nĂ« CPU.
- Biblioteka nghttp2 (CVE-2024-28182) â shkaktimi i njĂ« ndĂ«rprerje shĂ«rbimi.
- Apache Httpd (CVE-2024-27316) â konsum i tepruar i memories dhe krijimi i njĂ« ngarkese nĂ« CPU.
- Apache Traffic Server (CVE-2024-31309) â konsum i tepruar i resurseve.
- Envoy (CVE-2024-30255) â krijimi i njĂ« ngarkese tĂ« lartĂ« nĂ« CPU (pĂ«r njĂ« ngarkesĂ« tĂ« plotĂ« tĂ« njĂ« nukleusi CPU nevojitet njĂ« rrjedhĂ« prej 300Mbit/s).
Burimi: opennet.ru
