Toxcore-da bufer to'lib ketishi UDP paketini yuborish orqali foydalaniladi

Tox P2P xabar almashish protokolining mos yozuvlar ilovasi bo'lgan Toxcore maxsus ishlab chiqilgan UDP paketini qayta ishlashda kod bajarilishini ishga tushirishi mumkin bo'lgan zaiflikka ega (CVE-2021-44847). UDP transporti o'chirib qo'yilmagan Toxcore-ga asoslangan ilovalarning barcha foydalanuvchilari zaiflikdan ta'sirlanadi. Hujum qilish uchun jabrlanuvchining IP-manzilini, tarmoq portini va umumiy DHT kalitini bilgan holda UDP paketini yuborish kifoya (bu ma'lumot DHT-da hamma uchun mavjud, ya'ni hujum istalgan foydalanuvchi yoki DHT tugunida amalga oshirilishi mumkin).

Muammo 0.1.9 dan 0.2.12 gacha bo'lgan toxcore nashrlarida mavjud bo'lib, 0.2.13 versiyasida tuzatildi. Mijoz ilovalari orasida hozircha faqat qTox loyihasi zaiflikni bartaraf etadigan yangilanishni chiqardi. Xavfsizlik yechimi sifatida siz TCP-ni qo'llab-quvvatlagan holda UDP-ni o'chirib qo'yishingiz mumkin.

Zaiflik tarmoq paketidagi ma'lumotlar hajmini noto'g'ri hisoblash natijasida yuzaga keladigan handle_request() funksiyasidagi buferning to'lib ketishi natijasida yuzaga keladi. Xususan, shifrlangan ma'lumotlarning uzunligi "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE" sifatida belgilangan CRYPTO_SIZE makrosida aniqlangan, keyinchalik "uzunlik - CRYPTO_SIZE" olib tashlash operatsiyasida ishlatilgan. Makrosda qavslar yo'qligi sababli barcha qiymatlar yig'indisini ayirish o'rniga 1 ni ayirib, qolgan qismlarni qo'shib qo'ydi. Masalan, "uzunlik - (1 + 32 * 2 + 24)" o'rniga bufer hajmi "uzunlik - 1 + 32 * 2 + 24" sifatida hisoblangan, bu esa bufer chegarasidan tashqarida stekdagi ma'lumotlarni qayta yozishga olib keldi.

Manba: opennet.ru

a Izoh qo'shish