Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ HTTP/2, задСйствованная Π² ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ΅ΠΉ DDoS-Π°Ρ‚Π°ΠΊΠ΅

Компания Google зафиксировала ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΡƒΡŽ DDoS-Π°Ρ‚Π°ΠΊΡƒ Π½Π° свою инфраструктуру, ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ составила 398 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² запросов Π² сСкунду. Новая Π°Ρ‚Π°ΠΊΠ° Π² 7 Ρ€Π°Π· прСвосходит ΠΏΠΎ интСнсивности ΠΏΡ€ΠΎΡˆΠ»ΡƒΡŽ Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΡƒΡŽ DDoS-Π°Ρ‚Π°ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ· 47 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² запросов Π² сСкунду. Для сравнСния вСсь Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π²ΠΎ всём Web оцСниваСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 1-3 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² запросов Π² сСкунду. Помимо Google с Π°Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Amazon ΠΈ Π‘loudflare. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ связана с выявлСниСм Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ HTTP/2 уязвимости (CVE-2023-44487), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΈ минимальной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ запросов Π½Π° сСрвСр.

Новая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «Rapid Reset» ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прСдоставляСмыС Π² HTTP/2 срСдства ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² связи Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ запросов Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡƒΠΆΠ΅ установлСнного соСдинСния, Π±Π΅Π· открытия Π½ΠΎΠ²Ρ‹Ρ… сСтСвых соСдинСний ΠΈ Π½Π΅ доТидаясь подтвСрТдСния получСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ рассматриваСтся ΠΊΠ°ΠΊ слСдствиС Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2, Π² спСцификации ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сказано, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ открытия слишком большого числа ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², слСдуСт Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π»ΠΈΠΌΠΈΡ‚, Π½ΠΎ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ всё сСтСвоС соСдинСниС.

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠΈΠΌΠΈΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ провСдСния Π°Ρ‚Π°ΠΊ Π½Π° HTTP/2, Π² Π½ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ создаётся большоС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ соСдинСния. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вмСсто оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° слСдом Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ запросом направляСтся ΠΊΠ°Π΄Ρ€ с Ρ„Π»Π°Π³ΠΎΠΌ RST_STREAM, сразу ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌ запрос. ΠžΡ‚ΠΌΠ΅Π½Π° запроса Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² сторону ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π° HTTP-сСрвСрах ограничСния Π½Π° максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ€Ρ‹Ρ‚Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ соСдинСния ΠΏΠΎ HTTP/2. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π½ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌ направляСмых Π½Π° HTTP-сСрвСр запросов пСрСстаёт Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ запроса ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° (RTT, round-trip time) ΠΈ упираСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»Π° связи.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ HTTP/2, задСйствованная Π² ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ΅ΠΉ DDoS-Π°Ρ‚Π°ΠΊΠ΅

Π’Π°ΠΊ ΠΊΠ°ΠΊ для провСдСния Π°Ρ‚Π°ΠΊΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° достаточно просто ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы, Π½Π΅ получая ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами. НапримСр, зафиксированная ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Π‘loudflare Π°Ρ‚Π°ΠΊΠ° Π² 201 ΠΌΠ»Π½ запросов Π² сСкунду Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшого Π±ΠΎΡ‚Π½Π΅Ρ‚Π° Π² 20 тысяч ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². На сторонС сСрвСра Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… запросов сущСствСнно Π²Ρ‹ΡˆΠ΅, нСсмотря Π½Π° ΠΈΡ… ΠΎΡ‚ΠΌΠ΅Π½Ρƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Ρ€Π°Π·Π±ΠΎΡ€ запроса, распаковка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ сопоставлСниС URL с рСсурсом. ΠŸΡ€ΠΈ Π°Ρ‚Π°ΠΊΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ прокси, Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° бэкСнды, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прокси ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΏΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос Π½Π° бэкСнд Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°Π΄Ρ€Π° RST_STREAM.

Атака ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° уязвимыС сСрвСры с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ HTTP/2 (скрипт для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ проявлСния уязвимости Π² сСрвСрах, инструмСнтарий для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ). Для HTTP/3 Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ зафиксированы ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π½ΠΎ прСдставитСли Google Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ сСрвСров Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ HTTP/3 ΠΌΠ΅Ρ€Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для блокирования Π°Ρ‚Π°ΠΊΠΈ Π½Π° HTTP/2.

ΠŸΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ уязвимости ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ исправлСний для HTTP-сСрвСров ΠΈ прокси:

  • nginx (анонс, пояснСниС, Ρ‡Ρ‚ΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π΅ проявляСтся Π² nginx Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Ρ‚Π°ΠΊΠ° упрётся Π² Π»ΠΈΠΌΠΈΡ‚ Π½Π° число запросов Π½Π° соСдинСниС (Ρ‚.e. послС ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 1000 запросов соСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ). Π’ исправлСнии Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΏΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡŽ интСнсивности запросов Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ «limit_req»).
  • Π’ HAProxy эффСктивная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² HTTP/2 Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΅Ρ‰Ρ‘ Π² 2018 Π³ΠΎΠ΄Ρƒ ΠΈ дСйствуСт начиная с вСрсии 1.9-dev.
  • Apache httpd (создаётся опрСдСлённая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° httpd, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ распространяСтся Π½Π° бэкСнды ΠΈ ограничиваСтся Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ с 2016 Π³ΠΎΠ΄Π° Π»ΠΈΠΌΠΈΡ‚Π°ΠΌΠΈ Π½Π° соСдинСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²).
  • mod_h2 для Apache httpd.
  • caddy
  • envoy
  • golang (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² выпусках Go 1.21.3 ΠΈ 1.20.10).
  • h2o (ΠΏΠ°Ρ‚Ρ‡).
  • grpc-go
  • hyper (ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ проявляСтся).
  • jetty (исправлСно Π² 12.0.2, 11.0.17, 10.0.17 ΠΈ 9.4.53.v20231009).
  • netty
  • nghttp2 (исправлСно Π² вСрсии 1.57.0).
  • Facebook proxygen
  • .NET ΠΈ ASP.NET Core (уязвимости ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ http-сСрвСр ASP.NET Core Kestrel).
  • Node.js
  • proxygen
  • swift-nio-http2 (исправлСно Π² вСрсии 1.28.0).
  • Apache Tomcat (исправлСно Π² вСрсиях 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94).
  • Apache Traffic Server (исправлСно Π² Π²Π΅Ρ‚ΠΊΠ΅ 9.2.x).

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ