OpenBSD IPv6 stekidagi masofaviy zaiflik

OpenBSD-da IPv6 manzilini avtomatik sozlash (IPv6 fuqaroligi bo'lmagan manzilni avtomatik sozlash, RFC 4862) uchun mas'ul bo'lgan slaacd fon jarayonida, maxsus ishlab chiqilgan IPv6 router reklamasini (RA, Router Advertisement) olishda buferning to'lib ketishiga olib keladigan zaiflik aniqlandi. .

Dastlab, IPv6 manzilini avtomatik sozlash funksiyasi yadro darajasida amalga oshirildi, lekin OpenBSD 6.2 dan boshlab u alohida imtiyozsiz slaacd jarayoniga o'tkazildi. Ushbu jarayon RS (Router Solicitation) xabarlarini yuborish va yo'riqnoma va tarmoq ulanishi parametrlari haqidagi ma'lumotlarga ega RA (Router Advertisement) javoblarini tahlil qilish uchun javobgardir.

Fevral oyida slaacd RDNSS (Recursive DNS Servers) roʻyxatida 7 ta server koʻrsatilgan boʻlsa, uning ishdan chiqishiga sabab boʻlgan xatoni tuzatdi. Ushbu nazorat mustaqil tadqiqotchilarning e'tiborini tortdi, ular slaacd kodini RA xabarlaridagi maydonlarni tahlil qilishda yuzaga keladigan boshqa xatolar uchun tekshirishga harakat qildilar. Tahlil shuni ko'rsatdiki, kodda yana bir muammo bor, u DNS uchun domen nomlari va xost shablonlari ro'yxatini o'z ichiga olgan DNSSL (DNS Search List) maydonini qayta ishlashda o'zini namoyon qiladi.

DNSSL ro'yxatidagi har bir nom null chegaralovchi va keyingi ma'lumotlar hajmini aniqlaydigan bir baytli teglar yordamida kodlangan. Zaiflik roʻyxatni tahlil qilish kodida oʻlchamli maydon imzolangan butun sonli oʻzgaruvchiga (“len = data[pos]”) koʻchirilishi bilan bogʻliq. Shunga ko'ra, agar qiymat eng muhim bit to'plamiga ega bo'lgan maydonda ko'rsatilgan bo'lsa, bu qiymat shartli operatorda manfiy raqam va ruxsat etilgan maksimal o'lchamni tekshirish sifatida qabul qilinadi ("agar (len > 63 || len + pos) + 1 > datalen) {“) ishlamaydi, bu esa koʻchirilgan maʼlumotlar hajmi bufer hajmidan oshib ketadigan parametr bilan memcpy ga qoʻngʻiroq qilishga olib keladi.

OpenBSD IPv6 stekidagi masofaviy zaiflik
OpenBSD IPv6 stekidagi masofaviy zaiflik


Manba: opennet.ru

a Izoh qo'shish