2 DoS-haavoittuvuutta on tunnistettu HTTP/8-protokollan eri toteutuksissa

Netflixin ja Googlen tutkijat paljastettiin HTTP/2-protokollan eri toteutuksissa on kahdeksan haavoittuvuutta, jotka voivat aiheuttaa palveluneston lähettämällä verkkopyyntövirran tietyllä tavalla. Ongelmat vaikuttavat jossain määrin useimpiin HTTP/2-tukea käyttäviin HTTP-palvelimiin ja aiheuttavat työprosessin muistin loppumisen tai liian suuren suorittimen kuormituksen. Haavoittuvuuksia poistavia päivityksiä on jo esitelty nginx 1.16.1/1.17.3 и H2O 2.2.6, mutta toistaiseksi ei ole saatavilla Apache httpd and muut tuotteet.

Ongelmat johtuivat HTTP/2-protokollan aiheuttamista hankaluuksista, jotka liittyivät binäärirakenteiden käyttöön, tietovirtojen rajoittamiseen yhteyksien sisällä, virtauksen priorisointimekanismiin ja HTTP/2-yhteydessä toimiviin ICMP-tyyppisiin ohjaussanomiin. taso (esimerkiksi ping-, nollaus- ja virtausasetukset). Monet toteutukset eivät rajoita kunnolla ohjaussanomien kulkua, eivät hallinneet tehokkaasti prioriteettijonoa pyyntöjä käsiteltäessä tai käyttivät vuonohjausalgoritmien alioptimaalisia toteutuksia.

Suurin osa tunnistetuista hyökkäysmenetelmistä rajoittuu tiettyjen pyyntöjen lähettämiseen palvelimelle, mikä johtaa suuren määrän vastausten luomiseen. Jos asiakas ei lue tietoja socketista eikä sulje yhteyttä, palvelinpuolen vastauspuskurointijono täyttyy jatkuvasti. Tämä käyttäytyminen kuormittaa jononhallintajärjestelmää verkkoyhteyksien käsittelyssä ja johtaa toteutusominaisuuksista riippuen käytettävissä olevan muistin tai suoritinresurssien kulumiseen.

Tunnistetut haavoittuvuudet:

  • CVE-2019-9511 (Data Dribble) – hyökkääjä pyytää suuria määriä dataa useisiin säikeisiin manipuloimalla liukuvan ikkunan kokoa ja säikeen prioriteettia pakottaen palvelimen asettamaan tiedot jonoon 1-tavuisina lohkoina;
  • CVE-2019-9512 (Ping Flood) - hyökkääjä myrkyttää jatkuvasti ping-viestejä HTTP/2-yhteyden kautta, jolloin lähetettyjen vastausten sisäinen jono tulvii toiselle puolelle;
  • CVE-2019-9513 (resurssisilmukka) - hyökkääjä luo useita pyyntösäikeitä ja muuttaa jatkuvasti säikeiden prioriteettia, jolloin prioriteettipuu sekoitetaan;
  • CVE-2019-9514 (Reset Flood) - hyökkääjä luo useita säikeitä
    ja lähettää virheellisen pyynnön jokaisen säikeen kautta, jolloin palvelin lähettää RST_STREAM-kehyksiä, mutta ei hyväksy niitä täyttämään vastausjonoa;

  • CVE-2019-9515 (Settings Flood) - hyökkääjä lähettää tyhjiä "SETTINGS"-kehyksiä, joihin palvelimen on kuitattava jokaisen pyynnön vastaanottaminen;
  • CVE-2019-9516 (0-Length Headers Leak) – hyökkääjä lähettää otsikkovirran, jossa on nollanimi ja tyhjä arvo, ja palvelin varaa muistiin puskurin jokaisen otsikon tallentamiseksi eikä vapauta sitä ennen kuin istunto päättyy. ;
  • CVE-2019-9517 (sisäinen tietojen puskurointi) - hyökkääjä avautuu
    HTTP/2-liukuikkuna, jossa palvelin lähettää tietoja ilman rajoituksia, mutta pitää TCP-ikkunan suljettuna, estäen tietojen kirjoittamisen pistorasiaan. Seuraavaksi hyökkääjä lähettää pyyntöjä, jotka vaativat laajan vastauksen;

  • CVE-2019-9518 (Empty Frames Flood) - Hyökkääjä lähettää kehyksiä, joiden tyyppi on DATA, HEADERS, CONTINUATION tai PUSH_PROMISE, mutta tyhjällä hyötykuormalla ja ilman virran lopetuslippua. Palvelin käyttää aikaa kunkin kehyksen käsittelyyn, mikä on suhteetonta hyökkääjän käyttämään kaistanleveyteen nähden.

Lähde: opennet.ru

Lisää kommentti