HTTP/2 уязвимост, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Π½Π°ΠΉ-голямата DDoS Π°Ρ‚Π°ΠΊΠ°

Google рСгистрира Π½Π°ΠΉ-голямата DDoS Π°Ρ‚Π°ΠΊΠ° Π½Π° своята инфраструктура, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΡ‚Π΅Ρ‚ бСшС 398 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° заявки Π² сСкунда. Новата Π°Ρ‚Π°ΠΊΠ° Π΅ 7 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° Ρ€Π΅ΠΊΠΎΡ€Π΄Π½Π° DDoS Π°Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈ която Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ успяха Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ 47 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° заявки Π² сСкунда. Π—Π° сравнСниС, цСлият Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² цялата ΠΌΡ€Π΅ΠΆΠ° сС оцСнява Π½Π° 1-3 ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄Π° заявки Π² сСкунда. Π’ допълнСниС към Google, Amazon ΠΈ Cloudflare ΡΡŠΡ‰ΠΎ бяха ΠΈΠ·ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€Π΅Π΄ Π°Ρ‚Π°ΠΊΠ°. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π½ΠΎΠ²Π° Π°Ρ‚Π°ΠΊΠ° Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° уязвимост Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2 (CVE-2023-44487), ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ заявки към ΡΡŠΡ€Π²ΡŠΡ€Π° с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Новата Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π·Π° Π°Ρ‚Π°ΠΊΠ° сС Π½Π°Ρ€ΠΈΡ‡Π° β€žΠ‘ΡŠΡ€Π·ΠΎ Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅β€œ ΠΈ сС възползва ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ срСдствата Π·Π° мултиплСксиранС Π½Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ, прСдоставСни Π² HTTP/2, правят възмоТно Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ заявки Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π²Π΅Ρ‡Π΅ установСна Π²Ρ€ΡŠΠ·ΠΊΠ°, Π±Π΅Π· Π΄Π° сС отварят Π½ΠΎΠ²ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Π±Π΅Π· Ρ‡Π°ΠΊΠ° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π‘Ρ‡ΠΈΡ‚Π° сС, Ρ‡Π΅ уязвимостта Π΅ слСдствиС ΠΎΡ‚ пропуск Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2, чиято спСцификация гласи, Ρ‡Π΅ Π°ΠΊΠΎ сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° отварянС Π½Π° Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, само ΠΏΠΎΡ‚ΠΎΡ†ΠΈΡ‚Π΅, Π½Π°Π΄Π²ΠΈΡˆΠ°Π²Π°Ρ‰ΠΈ Π»ΠΈΠΌΠΈΡ‚Π°, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°Π½ΡƒΠ»ΠΈΡ€Π°Π½ΠΈ, Π½ΠΎ Π½Π΅ ΠΈ цялата ΠΌΡ€Π΅ΠΆΠ° Π’Ρ€ΡŠΠ·ΠΊΠ°.

Подобно Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎ-Ρ€Π°Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° Π°Ρ‚Π°ΠΊΠ° Π½Π° HTTP/2, Π½ΠΎΠ²Π°Ρ‚Π° Π°Ρ‚Π°ΠΊΠ° ΡΡŠΡ‰ΠΎ създава голям Π±Ρ€ΠΎΠΉ нишки Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° Π°Ρ‚Π°ΠΊΠ° Π΅, Ρ‡Π΅ вмСсто Π΄Π° сС Ρ‡Π°ΠΊΠ° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, всяка ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½Π° заявка Π΅ послСдвана ΠΎΡ‚ Ρ€Π°ΠΌΠΊΠ° с RST_STREAM Ρ„Π»Π°Π³, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ отмСня заявката. АнулиранСто Π½Π° заявка Π½Π° Ρ€Π°Π½Π΅Π½ Π΅Ρ‚Π°ΠΏ Π²ΠΈ позволява Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ обратния Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ ограничСнията Π·Π° максималния възмоТСн Π±Ρ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° HTTP/2 Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° HTTP ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π’Π°ΠΊΠ° ΠΏΡ€ΠΈ Π½ΠΎΠ²Π°Ρ‚Π° Π°Ρ‚Π°ΠΊΠ° ΠΎΠ±Π΅ΠΌΡŠΡ‚ Π½Π° заявкитС, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ Π΄ΠΎ HTTP ΡΡŠΡ€Π²ΡŠΡ€Π°, прСстава Π΄Π° зависи ΠΎΡ‚ Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΡΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявката ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ (RTT, Π²Ρ€Π΅ΠΌΠ΅ Π·Π° двупосочно ΠΏΡŠΡ‚ΡƒΠ²Π°Π½Π΅) ΠΈ зависи само ΠΎΡ‚ чСстотната Π»Π΅Π½Ρ‚Π° Π½Π° комуникационния ΠΊΠ°Π½Π°Π».

 HTTP/2 уязвимост, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Π½Π°ΠΉ-голямата DDoS Π°Ρ‚Π°ΠΊΠ°

Въй ΠΊΠ°Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° ΠΎΡ‚ страна Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° изисква просто ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° заявки Π±Π΅Π· ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ. НапримСр, Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° с 201 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° заявки Π² сСкунда, рСгистрирана ΠΎΡ‚ Cloudflare, Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° относитСлно ΠΌΠ°Π»ΠΊΠ° Π±ΠΎΡ‚Π½Π΅Ρ‚ ΠΌΡ€Π΅ΠΆΠ° ΠΎΡ‚ 20 000 ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π°. ΡΡŠΡ€Π²ΡŠΡ€ Π¦Π΅Π½Π°Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входящитС заявки Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-висока, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ тяхното Π°Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅, ΠΏΠΎΡ€Π°Π΄ΠΈ нСобходимостта ΠΎΡ‚ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ разпрСдСлянС Π½Π° структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π·Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, парсиранС Π½Π° заявката, Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° ΠΈ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° URL адрСса с рСсурса. ΠŸΡ€ΠΈ Π°Ρ‚Π°ΠΊΠ° срСщу ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΈ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС разпространи към Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ прокси ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° прСнасочи заявката към Π±Π΅ΠΊΠ΅Π½Π΄Π°, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ°Π΄ΡŠΡ€ΡŠΡ‚ RST_STREAM.

Атаката ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½Π° само Π½Π° уязвими ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ HTTP/2 (скрипт Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° уязвимост Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, инструмСнти Π·Π° Π°Ρ‚Π°ΠΊΠΈ). ВсС ΠΎΡ‰Π΅ Π½Π΅ са ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ Π°Ρ‚Π°ΠΊΠΈ Π·Π° HTTP/3 ΠΈ тяхната ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΈΠΌΠΎΡΡ‚ Π½Π΅ Π΅ напълно Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π°, Π½ΠΎ прСдставитСли Π½Π° Google ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ към HTTP/3 Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΌΠ΅Ρ€ΠΊΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠΈ срСщу HTTP/2.

ИзлаганС Π½Π° уязвимост ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π·Π° HTTP ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ проксита:

  • nginx (ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, пояснСниС, Ρ‡Π΅ уязвимостта Π½Π΅ сС проявява напълно Π² nginx Π² конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° Ρ‰Π΅ бъдС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° броя Π½Π° заявкитС Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ° (Ρ‚.Π΅. слСд всСки 1000 заявки Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Ρ‰Π΅ бъдС Π½ΡƒΠ»ΠΈΡ€Π°Π½Π°). ΠŸΠ°Ρ‡ΡŠΡ‚ добавя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° интСнзивността Π½Π° заявкитС Ρ‡Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° β€œlimit_req”).
  • Π’ HAProxy Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу ΠΏΡ€Π΅Π²ΠΈΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° броя HTTP/2 нишки бСшС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡ€Π΅Π· 2018 Π³. ΠΈ Π΅ Π² сила ΠΎΡ‚ вСрсия 1.9-dev.
  • Apache httpd (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ сС създава Π½Π° httpd, Π½ΠΎ Π½Π΅ сС отнася Π·Π° Π·Π°Π΄Π½ΠΈΡ‚Π΅ части ΠΈ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΎΡ‚ ограничСнията Π·Π° клиСнтски Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π² сила ΠΎΡ‚ 2016 Π³.).
  • mod_h2 Π·Π° Apache httpd.
  • ΠΊΡƒΡ‚ΠΈΠΉΠΊΠ° Π·Π° Ρ‡Π°ΠΉ
  • ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½
  • golang (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² вСрсии Go 1.21.3 ΠΈ 1.20.10).
  • h2o (Π»Π΅ΠΏΠ΅Π½ΠΊΠ°).
  • grpc-go
  • Ρ…ΠΈΠΏΠ΅Ρ€ (уязвимостта Π½Π΅ сС появява).
  • jetty (ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² 12.0.2, 11.0.17, 10.0.17 ΠΈ 9.4.53.v20231009).
  • Π½Π΅Ρ‚ΠΈ
  • nghttp2 (ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ във вСрсия 1.57.0).
  • Facebook проксигСн
  • .NET ΠΈ ASP.NET Core (http ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ASP.NET Core Kestrel Π΅ уязвим).
  • Node.js
  • проксигСн
  • 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€