U različitim implementacijama HTTP/2 protokola identificirano je 8 DoS ranjivosti

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 toka mrežnih zahtjeva na određeni način. Problem utječe na većinu HTTP poslužitelja s HTTP/2 podrškom u određenoj mjeri i rezultira time da radniku ponestaje memorije ili stvara previše opterećenja CPU-a. Ažuriranja koja uklanjaju ranjivosti već su predstavljena u nginx 1.16.1/1.17.3 и H2O 2.2.6, ali za sada nedostupan za Apache httpd i drugi proizvodi.

Problemi su proizašli iz komplikacija uvedenih u HTTP/2 protokol povezanih s upotrebom binarnih struktura, sustava za ograničavanje protoka podataka unutar veza, mehanizma za određivanje prioriteta protoka i prisutnosti kontrolnih poruka sličnih ICMP-u koje rade na HTTP/2 vezi razinu (na primjer, postavke pinga, resetiranja i protoka). Mnoge implementacije nisu pravilno ograničile protok kontrolnih poruka, nisu učinkovito upravljale redom prioriteta prilikom obrade zahtjeva ili su koristile suboptimalne implementacije algoritama za kontrolu protoka.

Većina identificiranih metoda napada svodi se na slanje određenih zahtjeva poslužitelju, što dovodi do generiranja velikog broja odgovora. Ako klijent ne čita podatke iz utičnice i ne zatvara vezu, red međuspremnika odgovora na strani poslužitelja neprekidno se popunjava. Ovakvo ponašanje opterećuje sustav upravljanja redom čekanja za obradu mrežnih veza i, ovisno o značajkama implementacije, dovodi do iscrpljivanja dostupne memorije ili CPU resursa.

Identificirane ranjivosti:

  • CVE-2019-9511 (Data Dribble) - napadač zahtijeva veliku količinu podataka u više niti manipulirajući veličinom kliznog prozora i prioritetom niti, prisiljavajući poslužitelj da podatke stavi u red čekanja u blokovima od 1 bajta;
  • CVE-2019-9512 (Ping Flood) - napadač kontinuirano truje ping poruke preko HTTP/2 veze, uzrokujući preplavljivanje internog reda čekanja poslanih odgovora na drugoj strani;
  • CVE-2019-9513 (Resource Loop) - napadač stvara više niti zahtjeva i kontinuirano mijenja prioritet niti, uzrokujući miješanje stabla prioriteta;
  • CVE-2019-9514 (Reset Flood) - napadač stvara više niti
    i šalje nevažeći zahtjev kroz svaku nit, uzrokujući da poslužitelj pošalje RST_STREAM okvire, ali ih ne prihvati da popuni red odgovora;

  • CVE-2019-9515 (Settings Flood) - napadač šalje niz praznih okvira "SETTINGS", kao odgovor na koji poslužitelj mora potvrditi primitak svakog zahtjeva;
  • CVE-2019-9516 (0-Length Headers Leak) – napadač šalje tok zaglavlja s null imenom i null vrijednošću, a poslužitelj dodjeljuje međuspremnik u memoriji za pohranu svakog zaglavlja i ne pušta ga dok sesija ne završi ;
  • CVE-2019-9517 (Interna memorija podataka) - otvara se napadač
    HTTP/2 klizni prozor za poslužitelj za slanje podataka bez ograničenja, ali drži TCP prozor zatvorenim, sprječavajući da se podaci stvarno zapisuju u utičnicu. Zatim, napadač šalje zahtjeve koji zahtijevaju veliki odgovor;

  • CVE-2019-9518 (Empty Frames Flood) - Napadač šalje tok okvira tipa DATA, HEADERS, CONTINUATION ili PUSH_PROMISE, ali s praznim sadržajem i bez oznake prekida protoka. Poslužitelj troši vrijeme na obradu svakog okvira, neproporcionalno propusnosti koju koristi napadač.

Izvor: opennet.ru

Dodajte komentar