Π’ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2 выявлСно 8 DoS-уязвимостСй

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Netflix ΠΈ Google выявили Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2 восСмь уязвимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° сСтСвых запросов. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ HTTP-сСрвСров с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ HTTP/2 ΠΈ приводят ΠΊ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΡŽ доступной для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса памяти ΠΈΠ»ΠΈ созданию слишком высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° CPU. ОбновлСния с устранСниСм уязвимостСй ΡƒΠΆΠ΅ прСдставлСны Π² nginx 1.16.1/1.17.3 ΠΈ H2O 2.2.6, Π½ΠΎ ΠΏΠΎΠΊΠ° нСдоступны для Apache httpd ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ стали слСдствиСм внСсённых Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP/2 услоТнСний, связанных с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… структур, систСмой лимитирования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ соСдинСний, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Π·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ наличия ICMP-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… сообщСний, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ соСдинСния HTTP/2 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ping, сброса ΠΈ настройки ΠΏΠΎΡ‚ΠΎΠΊΠ°). МногиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… сообщСний, нСэффСктивно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов ΠΈΠ»ΠΈ использовали Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ выявлСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Ρ‚Π°ΠΊΠΈ сводятся ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π° сСрвСр ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… запросов, приводящих ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ большого числа ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². Если ΠΏΡ€ΠΈ этом ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· сокСта Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Π΅Ρ‚ соСдинСниС, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° сторонС сСрвСра Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ заполняСтся. ПодобноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ создаёт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° систСму управлСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСтСвых соСдинСний ΠΈ Π² зависимости ΠΎΡ‚ особСнностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΡŽ доступной памяти ΠΈΠ»ΠΈ рСсурсов CPU.

ВыявлСнныС уязвимости:

  • CVE-2019-9511 (Data Dribble) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ большой ΠΎΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², манипулируя Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°, принуТдая сСрвСр ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎ 1 Π±Π°ΠΉΡ‚Ρƒ;
  • CVE-2019-9512 (Ping Flood) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ отравляСт ping-сообщСния Ρ‡Π΅Ρ€Π΅Π· соСдинСниС HTTP/2, инициируя Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сторонС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²;
  • CVE-2019-9513 (Resource Loop) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ создаёт нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² запросов ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ мСняСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², вызывая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²;
  • CVE-2019-9514 (Reset Flood) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ создаёт нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²
    ΠΈ отправляСт Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ запрос, вызывая ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сСрвСром ΠΊΠ°Π΄Ρ€ΠΎΠ² RST_STREAM, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡ… для заполнСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²;

  • CVE-2019-9515 (Settings Flood) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ отправляСт ΠΏΠΎΡ‚ΠΎΠΊ пустых ΠΊΠ°Π΄Ρ€ΠΎΠ² «SETTINGS», Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСрвСр обязан ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса;
  • CVE-2019-9516 (0-Length Headers Leak) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ отправляСт ΠΏΠΎΡ‚ΠΎΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π° сСрвСр выдСляСт для хранСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π±ΡƒΡ„Π΅Ρ€ Π² памяти ΠΈ Π½Π΅ освобоТдаСт Π΅Π³ΠΎ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сСанса;
  • CVE-2019-9517 (Internal Data Buffering) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚
    ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ HTTP/2 для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сСрвСром Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΎΠΊΠ½ΠΎ TCP Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт фактичСски Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² сокСт. Π”Π°Π»Π΅Π΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ отправляСт запросы, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ большого ΠΎΡ‚Π²Π΅Ρ‚Π°;

  • CVE-2019-9518 (Empty Frames Flood) — Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ отправляСт ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠ°Π΄Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° DATA, HEADERS, CONTINUATION ΠΈΠ»ΠΈ PUSH_PROMISE, Π½ΠΎ с пустым ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ содСрТимым ΠΈ Π±Π΅Π· Ρ„Π»Π°Π³Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ врСмя Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π°, Π½Π΅ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠΉ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ полосС пропускания.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru