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

Forskere fra Netflix og Google har identificeret har identificeret otte sårbarheder i forskellige implementeringer af HTTP/2-protokollen, der muliggør overbelastningsangreb ved at sende netværksanmodninger i et bestemt format. Problemerne berører i varierende grad de fleste HTTP-servere, der understøtter HTTP/2, og fører til en udtømning af det hukommelse, der er tilgængelig for arbejdsprocessen, eller skaber en for høj belastning på CPU'en. Opdateringer, der løser sårbarhederne, er allerede udgivet i nginx 1.16.1/1.17.3 og H2O 2.2.6, men indtil videre ikke tilgængelige for Apache httpd og andre produkter.

Problemerne er en følge af de kompleksiteter, der er indført i HTTP/2-protokollen, relateret til brug af binære strukturer, systemet til begrænsning af datastreams inden for forbindelser, mekanismen til prioritering af streams og eksistensen af ICMP-lignende kontrolmeddelelser, der fungerer på niveauet med HTTP/2-forbindelser (f.eks. ping-operationer, nulstilling og konfiguration af strømmen). Mange implementeringer begrænsede ikke korrekt strømmen af kontrolmeddelelser, organiserede ikke effektivt prioritetskøen ved behandling af anmodninger eller brugte suboptimale implementeringer af kontrolalgoritmer.

De fleste af de identificerede angrebsmetoder går ud på at sende specifikke anmodninger til serveren, der fører til genereringen af et stort antal svar. Hvis klienten ikke læser data fra socketen og ikke afbryder forbindelsen, fyldes bufferen til svar kontinuerligt op på serverens side. Den slags adfærd skaber belastning på systemet, der styrer køen af netværksforbindelser, og afhængigt af implementeringens karakteristika fører det til en udtømning af den tilgængelige hukommelse eller CPU-ressourcer.

Identificerede sårbarheder:

  • CVE-2019-9511 (Data Dribble) — Angriberen anmoder om en stor mængde data i flere streams ved at manipulere størrelsen på det glidende vindue og prioriteten af strømmen, hvilket tvinger serveren til at placere data i kø i blokke på 1 byte;
  • CVE-2019-9512 (Ping Flood) — Angriberen sender kontinuerligt ping-meddelinger gennem HTTP/2-forbindelsen, hvilket initierer udfyldningen af den interne kø af sendte svar på den anden side;
  • CVE-2019-9513 (Resource Loop) — Angriberen opretter flere anmodningsstreams og ændrer kontinuerligt strømmenes prioriteter, hvilket forårsager en blanding af prioritetsrækken;
  • CVE-2019-9514 (Reset Flood) — Angriberen opretter flere streams
    og sender en ugyldig anmodning via hver strøm, hvilket får serveren til at sende RST_STREAM-rammer, men ikke modtager dem til at udfylde svarkøen;
  • CVE-2019-9515 (Settings Flood) — en angriber sender en strøm af tomme 'SETTINGS'-rammer, hvortil serveren skal bekræfte modtagelsen af hver anmodning;
  • CVE-2019-9516 (0-Length Headers Leak) — en angriber sender en strøm af headers med nul navn og nul værdi, hvorefter serveren tildeler et buffer i hukommelsen til hver header og ikke frigiver det, før sessionen er afsluttet;
  • CVE-2019-9517 (Internal Data Buffering) — en angriber åbner
    vindue i HTTP/2 for at sende data fra serveren uden begrænsninger, mens TCP-vinduet forbliver lukket, hvilket forhindrer reelt at skrive data til socket. Derefter sender angriberen anmodninger, der kræver store svar;
  • CVE-2019-9518 (Empty Frames Flood) — en angriber sender en strøm af rammer af typen DATA, HEADERS, CONTINUATION eller PUSH_PROMISE, men med tomt indhold og uden flowafslutningsflag. Serveren bruger tid på at behandle hver ramme, hvilket er uforholdsmæssigt i forhold til angriberens båndbredde.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster