2 DoS sebezhetőséget azonosítottak a HTTP/8 protokoll különböző megvalósításaiban

A Netflix és a Google kutatói kiderült A HTTP/2 protokoll különféle megvalósításaiban nyolc olyan sérülékenység található, amelyek szolgáltatásmegtagadást okozhatnak azáltal, hogy bizonyos módon hálózati kéréseket küldenek. A probléma a legtöbb HTTP/2-támogatással rendelkező HTTP-kiszolgálót érinti bizonyos mértékig, és azt eredményezi, hogy a dolgozónak elfogy a memóriája, vagy túl sok CPU-terhelés jön létre. A sebezhetőségeket kiküszöbölő frissítések már megjelennek nginx 1.16.1/1.17.3 и H2O 2.2.6, de egyelőre nem érhető el az Apache httpd és más termékek.

A problémákat a HTTP/2 protokollba bevezetett bonyodalmak okozták, amelyek a bináris struktúrák használatával, a kapcsolatokon belüli adatáramlást korlátozó rendszerrel, az áramlási prioritási mechanizmussal, valamint a HTTP/2 kapcsolaton működő ICMP-szerű vezérlőüzenetekkel kapcsolatosak. szint (például ping, visszaállítás és áramlási beállítások). Sok megvalósítás nem korlátozta megfelelően a vezérlőüzenetek áramlását, nem kezelte hatékonyan a prioritási sort a kérések feldolgozásakor, vagy az áramlásvezérlő algoritmusok szuboptimális megvalósításait használta.

A legtöbb azonosított támadási mód bizonyos kérések elküldésére vezethető vissza a kiszolgálónak, ami nagyszámú válasz generálásához vezet. Ha a kliens nem olvas adatokat a socketből, és nem zárja le a kapcsolatot, akkor a szerveroldali válaszpufferelési sor folyamatosan töltődik. Ez a viselkedés megterheli a sorkezelő rendszert a hálózati kapcsolatok feldolgozásához, és a megvalósítás jellemzőitől függően a rendelkezésre álló memória vagy CPU erőforrások kimerüléséhez vezet.

Azonosított sebezhetőségek:

  • CVE-2019-9511 (Data Dribble) – a támadó nagy mennyiségű adatot kér le több szálba a csúszóablak méretének és a szálprioritásnak a manipulálásával, és arra kényszeríti a kiszolgálót, hogy 1 bájtos blokkokban állítsa sorba az adatokat;
  • CVE-2019-9512 (Ping Flood) – a támadó folyamatosan mérgezi a ping üzeneteket HTTP/2 kapcsolaton keresztül, aminek következtében az elküldött válaszok belső sora elárasztja a másik oldalon;
  • CVE-2019-9513 (Erőforráshurok) – a támadó több kérési szálat hoz létre, és folyamatosan módosítja a szálak prioritását, ami a prioritási fa keveredését okozza;
  • CVE-2019-9514 (Reset Flood) – a támadó több szálat hoz létre
    és minden szálon keresztül érvénytelen kérést küld, aminek hatására a szerver RST_STREAM kereteket küld, de nem fogadja el azokat a válaszsor kitöltésére;

  • CVE-2019-9515 (Settings Flood) - a támadó üres „BEÁLLÍTÁSOK” kereteket küld, amelyekre válaszul a szervernek vissza kell igazolnia az egyes kérések fogadását;
  • CVE-2019-9516 (0-Length Headers Leak) – a támadó fejlécek folyamát küldi null névvel és null értékkel, a kiszolgáló pedig lefoglal egy puffert a memóriában az egyes fejlécek tárolására, és nem engedi fel a munkamenet végéig ;
  • CVE-2019-9517 (belső adatpufferelés) – megnyílik a támadó
    HTTP/2 csúszóablak a szerver számára, hogy korlátozás nélkül küldjön adatokat, de zárva tartja a TCP-ablakot, megakadályozva, hogy az adatok ténylegesen a socketbe kerüljenek. Ezután a támadó olyan kéréseket küld, amelyek nagy választ igényelnek;

  • CVE-2019-9518 (Üres keretek elárasztása) – A támadó DATA, HEADERS, CONTINUATION vagy PUSH_PROMISE típusú keretek folyamát küldi, de üres hasznos adattartalommal és folyamlezáró jelző nélkül. A szerver időt tölt az egyes keretek feldolgozásával, ami aránytalan a támadó által fogyasztott sávszélességgel.

Forrás: opennet.ru

Hozzászólás