HTTP/2 protokolining turli ilovalarida 8 ta DoS zaifligi aniqlangan

Netflix va Google tadqiqotchilari oshkor bo'ldi HTTP/2 protokolining turli ilovalarida ma'lum bir tarzda tarmoq so'rovlari oqimini yuborish orqali xizmat ko'rsatishni rad etishga olib kelishi mumkin bo'lgan sakkizta zaiflik mavjud. Muammo ma'lum darajada HTTP/2-ni qo'llab-quvvatlaydigan HTTP serverlarining ko'pchiligiga ta'sir qiladi va ishchining xotirasi tugashiga yoki juda ko'p CPU yuklanishiga olib keladi. Zaifliklarni bartaraf etadigan yangilanishlar allaqachon taqdim etilgan nginx 1.16.1/1.17.3 и H2O 2.2.6, lekin hozircha mavjud emas Apache uchun httpd va boshqa mahsulotlar.

Muammolar HTTP/2 protokoliga ikkilik tuzilmalardan foydalanish, ulanishlar ichidagi ma'lumotlar oqimini cheklash tizimi, oqim ustuvorligini aniqlash mexanizmi va HTTP/2 ulanishida ishlaydigan ICMP-ga o'xshash boshqaruv xabarlarining mavjudligi bilan bog'liq bo'lgan murakkabliklar natijasida yuzaga keldi. darajasi (masalan, ping, reset va oqim sozlamalari). Ko'pgina ilovalar boshqaruv xabarlari oqimini to'g'ri cheklamadi, so'rovlarni qayta ishlashda ustuvor navbatni samarali boshqarolmadi yoki oqimni boshqarish algoritmlarining suboptimal ilovalaridan foydalandi.

Aniqlangan hujum usullarining aksariyati serverga ma'lum so'rovlarni yuborishga to'g'ri keladi va bu ko'p sonli javoblarni yaratishga olib keladi. Agar mijoz rozetkadan ma'lumotlarni o'qimasa va ulanishni yopmasa, server tomonidagi javob buferlash navbati doimiy ravishda to'ldiriladi. Ushbu xatti-harakatlar tarmoq ulanishlarini qayta ishlash uchun navbatni boshqarish tizimiga yuk yaratadi va amalga oshirish xususiyatlariga qarab, mavjud xotira yoki CPU resurslarining tugashiga olib keladi.

Aniqlangan zaifliklar:

  • CVE-2019-9511 (Data Dribble) – tajovuzkor siljish oynasi o‘lchami va ip ustuvorligini o‘zgartirib, serverni ma’lumotlarni 1 baytli bloklarda navbatga qo‘yishga majburlash orqali bir nechta oqimlarga katta hajmdagi ma’lumotlarni so‘raydi;
  • CVE-2019-9512 (Ping Flood) - tajovuzkor HTTP/2 ulanishi orqali ping-xabarlarni doimiy ravishda zaharlaydi, bu esa yuborilgan javoblarning ichki navbatini boshqa tomondan suv bosishiga olib keladi;
  • CVE-2019-9513 (Resurs Loop) - buzg'unchi bir nechta so'rovlar oqimini yaratadi va iplarning ustuvorligini doimiy ravishda o'zgartiradi, bu esa ustuvorlik daraxtining aralashishiga olib keladi;
  • CVE-2019-9514 (Floodni tiklash) - tajovuzkor bir nechta mavzularni yaratadi
    va har bir oqim orqali yaroqsiz so'rov yuboradi, bu esa serverni RST_STREAM freymlarini yuborishiga olib keladi, lekin ularni javob navbatini to'ldirish uchun qabul qilmaydi;

  • CVE-2019-9515 (Settings Flood) - buzg'unchi bo'sh "SETTINGS" kadrlar oqimini yuboradi, bunga javoban server har bir so'rovni qabul qilganligini tasdiqlashi kerak;
  • CVE-2019-9516 (0-Length Headers Leak) – tajovuzkor nol nomli va nol qiymatli sarlavhalar oqimini yuboradi va server har bir sarlavhani saqlash uchun xotirada bufer ajratadi va sessiya tugaguniga qadar uni chiqarmaydi. ;
  • CVE-2019-9517 (ichki ma'lumotlarni buferlash) - buzg'unchi ochiladi
    Serverga ma'lumotlarni cheklovlarsiz yuborish uchun HTTP/2 surma oynasi, lekin TCP oynasini yopiq holda ushlab turadi, bu esa ma'lumotlarning rozetkaga yozilishini oldini oladi. Keyinchalik, tajovuzkor katta javob talab qiladigan so'rovlarni yuboradi;

  • CVE-2019-9518 (Empty Frames Flood) - Buzg'unchi DATA, HEADERS, CONTINUATION yoki PUSH_PROMISE tipidagi kadrlar oqimini yuboradi, lekin foydali yuk bo'sh va oqimni tugatish bayrog'i yo'q. Server tajovuzkor tomonidan iste'mol qilinadigan tarmoqli kengligiga nomutanosib bo'lgan har bir kadrni qayta ishlashga vaqt sarflaydi.

Manba: opennet.ru

a Izoh qo'shish