2 DoS ranjivosti je identifikovano u različitim implementacijama HTTP/8 protokola

Istraživači iz Netflixa i Googlea otkriveno Postoji osam ranjivosti u različitim implementacijama HTTP/2 protokola koje mogu uzrokovati uskraćivanje usluge slanjem niza mrežnih zahtjeva na određeni način. Problemi utiču na većinu HTTP servera sa podrškom za HTTP/2 do određenog stepena i uzrokuju da radni proces ostane bez memorije ili da stvori preveliko opterećenje CPU-a. Ažuriranja koja eliminišu ranjivosti su već predstavljena nginx 1.16.1/1.17.3 и H2O 2.2.6, ali za sada nedostupan za Apache httpd i ostali proizvodi.

Problemi su proizašli iz komplikacija uvedenih u HTTP/2 protokol povezanih s korištenjem binarnih struktura, sistema za ograničavanje protoka podataka unutar konekcija, mehanizma za određivanje prioriteta toka i prisutnosti kontrolnih poruka sličnih ICMP-u koje rade na HTTP/2 vezi nivo (na primjer, postavke pinga, resetovanja i protoka). Mnoge implementacije nisu pravilno ograničile tok kontrolnih poruka, nisu efikasno upravljale redom prioriteta prilikom obrade zahtjeva ili su koristile neoptimalne implementacije algoritama kontrole toka.

Većina identificiranih metoda napada svodi se na slanje određenih zahtjeva serveru, što dovodi do generiranja velikog broja odgovora. Ako klijent ne čita podatke iz utičnice i ne zatvori vezu, red čekanja odgovora na strani servera se neprekidno popunjava. Ovo ponašanje stvara opterećenje na sistemu upravljanja redovima za obradu mrežnih veza i, ovisno o karakteristikama implementacije, dovodi do iscrpljivanja raspoložive memorije ili CPU resursa.

Identifikovane ranjivosti:

  • CVE-2019-9511 (Data Dribble) - napadač zahteva veliku količinu podataka u više niti manipulišući veličinom kliznog prozora i prioritetom niti, primoravajući server da stavi podatke u red čekanja u blokovima od 1 bajta;
  • CVE-2019-9512 (Ping Flood) - napadač kontinuirano truje ping poruke preko HTTP/2 veze, uzrokujući da se interni red poslanih odgovora preplavi na drugoj strani;
  • CVE-2019-9513 (petlja resursa) - napadač kreira više niti zahtjeva i kontinuirano mijenja prioritet niti, uzrokujući miješanje stabla prioriteta;
  • CVE-2019-9514 (Reset Flood) - napadač kreira više niti
    i šalje nevažeći zahtjev kroz svaku nit, uzrokujući da server pošalje RST_STREAM okvire, ali ih ne prihvati da popuni red odgovora;

  • CVE-2019-9515 (Settings Flood) - napadač šalje tok praznih okvira "SETTINGS", kao odgovor na koji server mora potvrditi prijem svakog zahtjeva;
  • CVE-2019-9516 (curenje zaglavlja 0 dužine) – napadač šalje tok zaglavlja s nultim imenom i nultom vrijednošću, a server dodjeljuje bafer u memoriji za pohranjivanje svakog zaglavlja i ne otpušta ga dok se sesija ne završi ;
  • CVE-2019-9517 (Internal Data Buffering) - napadač se otvara
    HTTP/2 klizni prozor za server za slanje podataka bez ograničenja, ali drži TCP prozor zatvorenim, sprečavajući da se podaci stvarno upisuju u soket. Zatim, napadač šalje zahtjeve koji zahtijevaju veliki odgovor;

  • CVE-2019-9518 (Poplava praznih okvira) - Napadač šalje tok okvira tipa DATA, HEADERS, CONTINUATION ili PUSH_PROMISE, ali s praznim korisnim opterećenjem i bez oznake za završetak toka. Server troši vrijeme na obradu svakog okvira, nesrazmjerno propusnom opsegu koji koristi napadač.

izvor: opennet.ru

Dodajte komentar