Įvairiuose HTTP/2 protokolo diegimuose buvo nustatyti 8 DoS pažeidžiamumai

Tyrėjai iš „Netflix“ ir „Google“. atskleista Įvairiuose HTTP/2 protokolo diegimuose yra aštuoni pažeidžiamumai, dėl kurių tam tikru būdu siunčiamas tinklo užklausų srautas gali būti atsisakyta teikti paslaugą. Problema tam tikru mastu paveikia daugumą HTTP serverių su HTTP/2 palaikymu, todėl darbuotojui pritrūksta atminties arba susidaro per didelė procesoriaus apkrova. Atnaujinimai, kurie pašalina pažeidžiamumą, jau pateikti nginx 1.16.1 / 1.17.3 и H2O 2.2.6, bet kol kas nepasiekiamas skirta Apache httpd ir kiti produktai.

Problemos kilo dėl HTTP/2 protokolo komplikacijų, susijusių su dvejetainių struktūrų naudojimu, duomenų srautų per ryšius ribojimo sistema, srauto prioritetų nustatymo mechanizmu ir į ICMP panašių valdymo pranešimų, veikiančių HTTP/2 jungtyje. lygiu (pavyzdžiui, ping, nustatymo iš naujo ir srauto nustatymai). Daugelis diegimų tinkamai neapribojo valdymo pranešimų srauto, neefektyviai valdė prioritetinę eilę apdorojant užklausas arba naudojo neoptimalius srauto valdymo algoritmų įgyvendinimus.

Dauguma nustatytų atakos metodų yra susiję su tam tikrų užklausų siuntimu į serverį, todėl generuojama daug atsakymų. Jei klientas neskaito duomenų iš lizdo ir neužtraukia ryšio, atsakymo buferio eilė serverio pusėje nuolat pildosi. Dėl tokio elgesio apkraunama tinklo jungčių apdorojimo eilių valdymo sistema ir, atsižvelgiant į įgyvendinimo ypatybes, išeikvojama turima atmintis arba procesoriaus ištekliai.

Nustatyti pažeidžiamumai:

  • CVE-2019-9511 (Data Dribble) – užpuolikas prašo didelio duomenų kiekio į kelias gijas, manipuliuodamas slankiojančio lango dydžiu ir gijos prioritetu, priversdamas serverį įrašyti duomenis į eilę 1 baito blokais;
  • CVE-2019-9512 (Ping Flood) – užpuolikas nuolat nuodija ping pranešimus per HTTP/2 ryšį, todėl vidinė išsiųstų atsakymų eilė užplūsta kitoje pusėje;
  • CVE-2019-9513 (Resource Loop) – užpuolikas sukuria kelias užklausų gijas ir nuolat keičia gijų prioritetą, todėl prioritetų medis maišomas;
  • CVE-2019-9514 (iš naujo nustatyti potvynį) – užpuolikas sukuria kelias gijas
    ir siunčia neteisingą užklausą per kiekvieną giją, todėl serveris siunčia RST_STREAM kadrus, bet nepriima jų, kad užpildytų atsakymų eilę;

  • CVE-2019-9515 (Nustatymų užliejimas) - užpuolikas siunčia tuščių „NUSTATYMŲ“ kadrų srautą, į kurį atsakydamas serveris turi patvirtinti kiekvienos užklausos gavimą;
  • CVE-2019-9516 (0-Length Headers Leak) – užpuolikas siunčia antraščių srautą su nuliu pavadinimu ir nuline verte, o serveris atmintyje priskiria buferį kiekvienai antraštei saugoti ir neatleidžia jos iki seanso pabaigos. ;
  • CVE-2019-9517 (vidinis duomenų buferis) – atsidaro užpuolikas
    HTTP/2 slankusis langas, skirtas serveriui siųsti duomenis be apribojimų, tačiau TCP langas lieka uždarytas, neleidžiant iš tikrųjų įrašyti duomenų į lizdą. Tada užpuolikas siunčia užklausas, reikalaujančias didelio atsakymo;

  • CVE-2019-9518 (tuščių kadrų užtvindymas) – užpuolikas siunčia duomenų srautą DATA, HEADERS, CONTINUATION arba PUSH_PROMISE tipo kadrų, bet su tuščia naudinga apkrova ir be srauto nutraukimo vėliavėlės. Serveris sugaišta laiko, apdorodamas kiekvieną kadrą, neproporcingai užpuoliko sunaudojamam pralaidumui.

Šaltinis: opennet.ru

Добавить комментарий