2 dobësi DoS janë identifikuar në implementime të ndryshme të protokollit HTTP/8

Studiues nga Netflix dhe Google identifikuar Ekzistojnë tetë dobësi në zbatime të ndryshme të protokollit HTTP/2 që mund të shkaktojnë një mohim të shërbimit duke dërguar një rrjedhë kërkesash rrjeti në një mënyrë të caktuar. Problemi prek shumicën e serverëve HTTP me mbështetje HTTP/2 deri në një farë mase dhe rezulton në punëtorin që i mbaron memoria ose krijon shumë ngarkesë CPU. Përditësimet që eliminojnë dobësitë janë paraqitur tashmë në nginx 1.16.1/1.17.3 и H2O 2.2.6, por tani për tani i padisponueshëm për Apache httpd dhe produkte të tjera.

Problemet rezultuan nga ndërlikimet e futura në protokollin HTTP/2 të lidhura me përdorimin e strukturave binare, një sistem për kufizimin e rrjedhave të të dhënave brenda lidhjeve, një mekanizëm për prioritizimin e rrjedhës dhe praninë e mesazheve të kontrollit të ngjashëm me ICMP që veprojnë në lidhjen HTTP/2. niveli (për shembull, cilësimet e ping, rivendosjes dhe rrjedhës). Shumë zbatime nuk e kufizuan siç duhet rrjedhën e mesazheve të kontrollit, nuk e menaxhuan në mënyrë efikase radhën e përparësisë gjatë përpunimit të kërkesave ose përdorën zbatime nënoptimale të algoritmeve të kontrollit të rrjedhës.

Shumica e metodave të identifikuara të sulmit vijnë në dërgimin e kërkesave të caktuara në server, duke çuar në gjenerimin e një numri të madh përgjigjesh. Nëse klienti nuk lexon të dhëna nga priza dhe nuk e mbyll lidhjen, radha e buferit të përgjigjes në anën e serverit mbushet vazhdimisht. Kjo sjellje krijon një ngarkesë në sistemin e menaxhimit të radhës për përpunimin e lidhjeve të rrjetit dhe, në varësi të veçorive të zbatimit, çon në shterimin e memories së disponueshme ose burimeve të CPU-së.

Dobësitë e identifikuara:

  • CVE-2019-9511 (Drita e të dhënave) - një sulmues kërkon një sasi të madhe të dhënash në fije të shumta duke manipuluar madhësinë e dritares rrëshqitëse dhe përparësinë e fillit, duke e detyruar serverin të vendosë në radhë të dhënat në blloqe 1 bajt;
  • CVE-2019-9512 (Ping Flood) - një sulmues helmon vazhdimisht mesazhet ping mbi një lidhje HTTP/2, duke shkaktuar që radha e brendshme e përgjigjeve të dërguara të përmbytet në anën tjetër;
  • CVE-2019-9513 (Resource Loop) - një sulmues krijon fije të shumëfishta kërkesash dhe ndryshon vazhdimisht prioritetin e thread-eve, duke bërë që pema e përparësisë të ndahet;
  • CVE-2019-9514 (Reset Flood) - një sulmues krijon fije të shumta
    dhe dërgon një kërkesë të pavlefshme përmes çdo thread, duke bërë që serveri të dërgojë korniza RST_STREAM, por nuk i pranon ato për të mbushur radhën e përgjigjes;

  • CVE-2019-9515 (Përmbytja e cilësimeve) - sulmuesi dërgon një rrjedhë kornizash boshe "SETTINGS", në përgjigje të të cilave serveri duhet të pranojë marrjen e çdo kërkese;
  • CVE-2019-9516 (Rrjedhja e titujve 0-Length) – një sulmues dërgon një rrjedhë titujsh me një emër null dhe një vlerë null, dhe serveri cakton një buffer në memorie për të ruajtur çdo kokë dhe nuk e lëshon atë derisa të përfundojë sesioni ;
  • CVE-2019-9517 (Buferimi i brendshëm i të dhënave) - hapet sulmuesi
    Dritarja rrëshqitëse HTTP/2 që serveri të dërgojë të dhëna pa kufizime, por e mban dritaren TCP të mbyllur, duke parandaluar që të dhënat të shkruhen në të vërtetë në prizë. Më pas, sulmuesi dërgon kërkesa që kërkojnë një përgjigje të madhe;

  • CVE-2019-9518 (Përmbytja e kornizave boshe) - Një sulmues dërgon një rrymë kornizash të tipit DATA, HEADERS, CONTINUATION ose PUSH_PROMISE, por me ngarkesë boshe dhe pa flamur për përfundimin e rrjedhës. Serveri shpenzon kohë duke përpunuar çdo kornizë, në disproporcion me gjerësinë e brezit të konsumuar nga sulmuesi.

Burimi: opennet.ru

Shto një koment