Ang mga detalye ng isang "Continuation Flood" na paraan ng pag-atake ay isiniwalat, na nakakaapekto sa iba't ibang HTTP/2 protocol na pagpapatupad, kabilang ang Apache httpd, Apache Traffic Server, Node.js, oghttp, Go net/http2, Envoy, oghttp, at nghttp2. Maaaring gamitin ang kahinaan upang atakehin ang mga server na pinagana ng HTTP/2.0 at, depende sa pagpapatupad, humahantong sa pagkaubos ng memorya (humihiling ng paghinto sa pagproseso o pag-crash ng proseso) o mataas na pag-load ng CPU (paghiling ng mga pagbagal sa pagproseso). Ayon sa mananaliksik na natuklasan ang kahinaan, ang isyung ito ay mas mapanganib kaysa sa "Rapid Reset" na kahinaan na natuklasan noong nakaraang taon, na ginamit upang isagawa ang pinakamalaking pag-atake ng DDoS sa panahong iyon.
Ang mataas na antas ng panganib ay ipinaliwanag ng katotohanan na upang maantala ang gawain serverPara magdulot ng pag-crash, o malaking pagbaba ng performance, sapat na ang paglikha ng napakaraming espesyal na ginawang request mula sa iisang regular na computer. Sa ilang pagkakataon, kahit isang TCP connection ay sapat na para magsagawa ng pag-atake. Bukod dito, ang trapikong may kaugnayan sa pag-atake ay hindi namumukod-tangi sa mga log kumpara sa mga regular na request ng user.
Ang kahinaan ay sanhi ng pagpoproseso ng mga HEADERS at CONTINUATION frame sa mga kahilingan sa HTTP/2. Gumagamit ang HTTP/2 ng mga HEADERS frame upang magpadala ng mga HTTP header, habang ang CONTINUATION frame ay ginagamit upang hatiin ang paghahatid ng HTTP header sa maraming yugto (halimbawa, kapag ang mga header ay hindi magkasya sa isang frame o kapag ang mga header na maaaring punan sa kasalukuyang yugto ay dapat na unang ipadala, na sinusundan ng mga header na ang mga halaga ay hindi pa matukoy). Kapag nagpapadala ng mga header sa maraming yugto, isang HEADERS frame na walang END_HEADERS na flag ang unang ipapadala, na sinusundan ng ilang CONTINUATION na mga frame na may karagdagang mga header, at panghuli ay isang CONTINUATION frame na may END_HEADERS na flag.
Метод атаки сводится к отправке непрекращающегося потока кадров CONTINUATION без выставления флага END_HEADERS. Подобная активность приводит к передаче на server большого числа заголовков, которые сервер сохраняет в оперативной памяти до тех пор, пока доступная процессу память не будет исчерпана. Для создания высокой нагрузки на CPU помимо исчерпания памяти атакующий может воспользоваться сжатием содержимого кадров CONTINUATION с использованием формата HPACK, разбор которого требует вычислений. В реализациях протокола HTTP/1.1 для защиты от затопления сервера заголовками применялся лимит на размер заголовков и таймаут на время отправки соединения. Для HTTP/2 в силу усложнения протокола многие реализации не предусмотрели подобные методы защиты от бесконечной отправки заголовков.
Ang kahinaan ay nagdudulot ng pinakamalaking panganib sa mga user ng Node.js (CVE-2024-27983), dahil ang pagpapatupad na ito ay maaaring magdulot ng pag-crash sa pamamagitan ng pagpapadala lamang ng ilang mga frame sa server. Dahil sa isang kundisyon sa karera sa Node.js, ang pagwawakas ng mga koneksyon habang nagpapadala ng hindi natapos na stream ng mga header ay sapat na upang mag-trigger ng pag-crash sa pamamagitan ng isang assert check (nagaganap ang pag-crash kung ang isang CONTINUATION frame na may flag na END_HEADERS ay hindi pa dumarating kapag ang koneksyon ay sarado). Ang kahinaan ay naayos sa Node.js 18.20.1, 21.7.2, at 20.12.1, gayundin sa mga kamakailang release ng llhttp at undici library. Ang mga bagong bersyon ng Node.js ay nag-aayos din ng hindi gaanong matinding kahinaan (CVE-2024-27982) ng klase ng "request smuggling", na nagbibigay-daan, sa pamamagitan ng pagmamanipula sa value ng "Content Length," na mag-inject sa content ng mga kahilingan ng ibang user na naproseso sa parehong thread sa pagitan ng frontend at backend.
Mga kahinaan na nauugnay sa paghawak sa CONTINUATION sa iba pang mga pagpapatupad ng HTTP/2.0:
- oghttp (CVE-2024-27919) - Walang limitasyong pagkonsumo ng memorya.
- Tempesta FW (CVE-2024-2758) – Restriction Bypass.
- PHP library amphp/http, amphp/http-client at amphp/http-server (CVE-2024-2653) - walang limitasyong pagkonsumo ng memorya, hanggang sa kumpletong pagkaubos ng magagamit na memorya.
- Pumunta sa package net/http (CVE-2023-45288) - lumilikha ng mataas na load ng CPU.
- nghttp2 library (CVE-2024-28182) - pagtanggi sa kahinaan ng serbisyo.
- Apache Httpd (CVE-2024-27316 - Sobrang pagkonsumo ng memory at pag-load ng CPU.
- Apache Traffic Server (CVE-2024-31309 - Sobrang pagkonsumo ng mapagkukunan.
- Envoy (CVE-2024-30255) – lumilikha ng mataas na load ng CPU (kinakailangan ang 300 Mbit/s flow para ganap na ma-load ang isang CPU core).
Pinagmulan: opennet.ru
