2 DoS-sårbarheder er blevet identificeret i forskellige implementeringer af HTTP/8-protokollen

Forskere fra Netflix og Google afsløret Der er otte sårbarheder i forskellige implementeringer af HTTP/2-protokollen, der kan forårsage et lammelsesangreb ved at sende en strøm af netværksanmodninger på en bestemt måde. Problemet påvirker de fleste HTTP-servere med HTTP/2-understøttelse til en vis grad og resulterer i, at arbejderen løber tør for hukommelse eller skaber for meget CPU-belastning. Opdateringer, der eliminerer sårbarheder, er allerede præsenteret i nginx 1.16.1/1.17.3 и H2O 2.2.6, men for nu ikke tilgængelig til Apache httpd og andre produkter.

Problemerne skyldtes komplikationer indført i HTTP/2-protokollen forbundet med brugen af ​​binære strukturer, et system til begrænsning af datastrømme inden for forbindelser, en flowprioriteringsmekanisme og tilstedeværelsen af ​​ICMP-lignende kontrolmeddelelser, der opererer ved HTTP/2-forbindelsen niveau (f.eks. ping-, nulstillings- og flowindstillinger). Mange implementeringer begrænsede ikke strømmen af ​​kontrolmeddelelser korrekt, administrerede ikke prioritetskøen effektivt ved behandling af anmodninger eller brugte suboptimale implementeringer af flowkontrolalgoritmer.

De fleste af de identificerede angrebsmetoder kommer ned til at sende bestemte anmodninger til serveren, hvilket fører til generering af et stort antal svar. Hvis klienten ikke læser data fra socket og ikke lukker forbindelsen, fyldes responsbufferkøen på serversiden løbende. Denne adfærd skaber en belastning på køstyringssystemet til behandling af netværksforbindelser og fører, afhængigt af implementeringsfunktionerne, til udtømning af tilgængelig hukommelse eller CPU-ressourcer.

Identificerede sårbarheder:

  • CVE-2019-9511 (Data Dribble) - en angriber anmoder om en stor mængde data i flere tråde ved at manipulere den glidende vinduesstørrelse og trådprioritet, hvilket tvinger serveren til at sætte dataene i kø i 1-byte blokke;
  • CVE-2019-9512 (Ping Flood) - en angriber forgifter kontinuerligt ping-meddelelser over en HTTP/2-forbindelse, hvilket får den interne kø af sendte svar til at oversvømmes på den anden side;
  • CVE-2019-9513 (Resource Loop) - en angriber opretter flere anmodningstråde og ændrer løbende trådenes prioritet, hvilket får prioritetstræet til at blande;
  • CVE-2019-9514 (Reset Flood) - en angriber opretter flere tråde
    og sender en ugyldig anmodning gennem hver tråd, hvilket får serveren til at sende RST_STREAM-rammer, men accepterer dem ikke for at udfylde svarkøen;

  • CVE-2019-9515 (Settings Flood) - angriberen sender en strøm af tomme "SETTINGS"-rammer, som svar på hvilke serveren skal bekræfte modtagelse af hver anmodning;
  • CVE-2019-9516 (0-Length Headers Leak) – en angriber sender en strøm af headers med et null-navn og en null-værdi, og serveren tildeler en buffer i hukommelsen til at gemme hver header og frigiver den ikke før sessionen slutter ;
  • CVE-2019-9517 (intern databuffering) - angriberen åbner
    HTTP/2-skydevindue for serveren til at sende data uden begrænsninger, men holder TCP-vinduet lukket, hvilket forhindrer data i faktisk at blive skrevet til soklen. Dernæst sender angriberen anmodninger, der kræver et stort svar;

  • CVE-2019-9518 (Empty Frames Flood) - En angriber sender en strøm af frames af typen DATA, HEADERS, CONTINUATION eller PUSH_PROMISE, men med tom nyttelast og ingen flowtermineringsflag. Serveren bruger tid på at behandle hver frame, uforholdsmæssigt med den båndbredde, som angriberen bruger.

Kilde: opennet.ru

Tilføj en kommentar