2 DoS-kwesbaarhede is geïdentifiseer in verskeie implementerings van die HTTP/8-protokol

Navorsers van Netflix en Google geopenbaar Daar is agt kwesbaarhede in verskeie implementerings van die HTTP/2-protokol wat 'n ontkenning van diens kan veroorsaak deur 'n stroom netwerkversoeke op 'n sekere manier te stuur. Die probleem raak die meeste HTTP-bedieners met HTTP/2-ondersteuning tot 'n mate en lei daartoe dat die werker se geheue opraak of te veel SVE-lading skep. Opdaterings wat kwesbaarhede uitskakel, word reeds in aangebied nginx 1.16.1/1.17.3 и H2O 2.2.6, maar vir nou nie beskikbaar nie vir Apache httpd en ander produkte.

Die probleme was die gevolg van komplikasies wat in die HTTP/2-protokol ingestel is wat verband hou met die gebruik van binêre strukture, 'n stelsel om datavloei binne verbindings te beperk, 'n vloeiprioritiseringsmeganisme en die teenwoordigheid van ICMP-agtige beheerboodskappe wat by die HTTP/2-verbinding werk. vlak (byvoorbeeld ping-, reset- en vloeiinstellings). Baie implementerings het nie die vloei van beheerboodskappe behoorlik beperk nie, nie die prioriteitsry doeltreffend bestuur tydens die verwerking van versoeke nie, of suboptimale implementerings van vloeibeheeralgoritmes gebruik.

Die meeste van die geïdentifiseerde aanvalmetodes kom daarop neer dat sekere versoeke na die bediener gestuur word, wat lei tot die generering van 'n groot aantal antwoorde. As die kliënt nie data van die sok af lees nie en nie die verbinding sluit nie, vul die reaksiebufferwaglys aan die bedienerkant voortdurend. Hierdie gedrag skep 'n las op die toubestuurstelsel vir die verwerking van netwerkverbindings en, afhangende van die implementeringskenmerke, lei dit tot die uitputting van beskikbare geheue of SVE-hulpbronne.

Geïdentifiseerde kwesbaarhede:

  • CVE-2019-9511 (Data Dribble) - 'n aanvaller versoek 'n groot hoeveelheid data in veelvuldige drade deur die skuifvenstergrootte en draadprioriteit te manipuleer, wat die bediener dwing om die data in 1-grepe blokke in tou te stel;
  • CVE-2019-9512 (Ping Flood) - 'n aanvaller vergiftig voortdurend ping-boodskappe oor 'n HTTP/2-verbinding, wat veroorsaak dat die interne tou gestuurde antwoorde aan die ander kant oorstroom;
  • CVE-2019-9513 (Resource Loop) - 'n aanvaller skep veelvuldige versoekdrade en verander voortdurend die prioriteit van die drade, wat veroorsaak dat die prioriteitsboom skuifel;
  • CVE-2019-9514 (Reset Flood) - 'n aanvaller skep veelvuldige drade
    en stuur 'n ongeldige versoek deur elke draad, wat veroorsaak dat die bediener RST_STREAM-rame stuur, maar aanvaar dit nie om die antwoordwag te vul nie;

  • CVE-2019-9515 (Settings Flood) - die aanvaller stuur 'n stroom leë "SETTINGS"-rame, in reaksie waarop die bediener ontvangs van elke versoek moet erken;
  • CVE-2019-9516 (0-Length Headers Leak) – 'n aanvaller stuur 'n stroom opskrifte met 'n nulnaam en 'n nulwaarde, en die bediener ken 'n buffer in die geheue toe om elke kopskrif te stoor en stel dit nie vry voordat die sessie eindig nie ;
  • CVE-2019-9517 (interne databuffering) - aanvaller maak oop
    HTTP/2-skuifvenster vir die bediener om data sonder beperkings te stuur, maar hou die TCP-venster gesluit, wat verhoed dat data werklik na die sok geskryf word. Vervolgens stuur die aanvaller versoeke wat 'n groot reaksie vereis;

  • CVE-2019-9518 (Empty Frames Flood) - 'n Aanvaller stuur 'n stroom rame van tipe DATA, HEADERS, CONTINUATION of PUSH_PROMISE, maar met leë loonvrag en geen vloeibeëindigingsvlag nie. Die bediener spandeer tyd om elke raam te verwerk, buite verhouding tot die bandwydte wat deur die aanvaller verbruik word.

Bron: opennet.ru

Voeg 'n opmerking