2 Ang mga kahinaan ng DoS ay natukoy sa iba't ibang pagpapatupad ng HTTP/8 protocol

Mga mananaliksik mula sa Netflix at Google ipinahayag Mayroong walong mga kahinaan sa iba't ibang pagpapatupad ng HTTP/2 protocol na maaaring magdulot ng pagtanggi sa serbisyo sa pamamagitan ng pagpapadala ng stream ng mga kahilingan sa network sa isang tiyak na paraan. Ang problema ay nakakaapekto sa karamihan ng mga server ng HTTP na may suporta sa HTTP/2 sa ilang antas at nagreresulta sa pagkaubos ng memorya ng manggagawa o paggawa ng masyadong maraming CPU load. Ang mga update na nag-aalis ng mga kahinaan ay ipinakita na nginx 1.16.1/1.17.3 ΠΈ H2O 2.2.6, Pero sa ngayon hindi magagamit para sa Apache httpd at ibang produkto.

Ang mga problema ay nagresulta mula sa mga komplikasyon na ipinakilala sa HTTP/2 protocol na nauugnay sa paggamit ng mga binary na istruktura, isang sistema para sa paglilimita sa mga daloy ng data sa loob ng mga koneksyon, isang mekanismo ng pag-prioritize ng daloy, at ang pagkakaroon ng tulad ng ICMP na mga control message na tumatakbo sa HTTP/2 na koneksyon antas (halimbawa, ping, reset, at mga setting ng daloy). Maraming mga pagpapatupad ang hindi wastong nililimitahan ang daloy ng mga mensahe ng kontrol, hindi mahusay na pinamamahalaan ang priyoridad na pila kapag nagpoproseso ng mga kahilingan, o gumamit ng mga suboptimal na pagpapatupad ng mga algorithm ng pagkontrol sa daloy.

Karamihan sa mga natukoy na paraan ng pag-atake ay bumaba sa pagpapadala ng ilang partikular na kahilingan sa server, na humahantong sa pagbuo ng isang malaking bilang ng mga tugon. Kung ang kliyente ay hindi nagbabasa ng data mula sa socket at hindi isinara ang koneksyon, ang response buffering queue sa gilid ng server ay patuloy na napupuno. Ang pag-uugali na ito ay lumilikha ng pagkarga sa sistema ng pamamahala ng pila para sa pagproseso ng mga koneksyon sa network at, depende sa mga tampok ng pagpapatupad, ay humahantong sa pagkaubos ng magagamit na memorya o mga mapagkukunan ng CPU.

Natukoy na mga kahinaan:

  • CVE-2019-9511 (Data Dribble) - humihiling ang isang attacker ng malaking halaga ng data sa maraming thread sa pamamagitan ng pagmamanipula sa laki ng sliding window at priority ng thread, na pinipilit ang server na i-queue ang data sa 1-byte na mga bloke;
  • CVE-2019-9512 (Ping Flood) - patuloy na nilalason ng isang attacker ang mga mensahe ng ping sa isang HTTP/2 na koneksyon, na nagiging sanhi ng pagbaha sa kabilang panig ng panloob na pila ng mga ipinadalang tugon;
  • CVE-2019-9513 (Resource Loop) - ang isang attacker ay gumagawa ng maraming request thread at patuloy na binabago ang priyoridad ng mga thread, na nagiging sanhi ng pag-shuffle ng priority tree;
  • CVE-2019-9514 (I-reset ang Baha) - isang attacker ang gumagawa ng maraming thread
    at nagpapadala ng di-wastong kahilingan sa bawat thread, na nagiging sanhi ng server na magpadala ng mga RST_STREAM frame, ngunit hindi tinatanggap ang mga ito upang punan ang queue ng tugon;

  • CVE-2019-9515 (Settings Flood) - nagpapadala ang attacker ng stream ng mga walang laman na "SETTINGS" frame, bilang tugon kung saan dapat tanggapin ng server ang pagtanggap ng bawat kahilingan;
  • CVE-2019-9516 (0-Length Header Leak) – nagpapadala ang isang attacker ng stream ng mga header na may null na pangalan at null value, at naglalaan ang server ng buffer sa memory upang iimbak ang bawat header at hindi ito ilalabas hanggang sa matapos ang session ;
  • CVE-2019-9517 (Internal Data Buffering) - bubukas ang attacker
    HTTP/2 sliding window para sa server na magpadala ng data nang walang mga paghihigpit, ngunit pinananatiling nakasara ang TCP window, na pumipigil sa data na aktwal na maisulat sa socket. Susunod, nagpapadala ang umaatake ng mga kahilingan na nangangailangan ng malaking tugon;

  • CVE-2019-9518 (Empty Frames Flood) - Nagpapadala ang isang attacker ng stream ng mga frame na may uri ng DATA, HEADERS, CONTINUATION, o PUSH_PROMISE, ngunit may walang laman na payload at walang flag ng pagwawakas ng daloy. Ang server ay gumugugol ng oras sa pagpoproseso ng bawat frame, hindi katimbang sa bandwidth na natupok ng umaatake.

Pinagmulan: opennet.ru

Magdagdag ng komento