در فرآیند پسزمینه slaacd، که مسئول پیکربندی خودکار آدرس IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862) در OpenBSD است، آسیبپذیری شناسایی شده است که منجر به سرریز بافر هنگام دریافت تبلیغات روتر IPv6 ویژه طراحی شده (RA, Router Advertisement) میشود. .
در ابتدا، عملکرد پیکربندی خودکار آدرس IPv6 در سطح هسته پیادهسازی شد، اما با شروع OpenBSD 6.2 به یک فرآیند slaacd غیرمجاز جداگانه منتقل شد. این فرآیند مسئول ارسال پیامهای RS (درخواست روتر) و تجزیه پاسخهای RA (تبلیغات روتر) با اطلاعاتی در مورد پارامترهای روتر و اتصال شبکه است.
در ماه فوریه، slaacd باگی را برطرف کرد که در صورت مشخص شدن 7 سرور در لیست RDNSS (سرورهای DNS بازگشتی) باعث از کار افتادن آن می شد. این نظارت توجه محققان مستقلی را به خود جلب کرد که سعی کردند کد slaacd را برای سایر خطاهایی که هنگام تجزیه فیلدها در پیامهای RA رخ میدهند، بررسی کنند. تجزیه و تحلیل نشان داد که مشکل دیگری در کد وجود دارد که هنگام پردازش فیلد DNSSL (List Search DNS) که شامل لیستی از نام های دامنه و قالب های میزبان برای DNS است، خود را نشان می دهد.
هر نام در لیست DNSSL با استفاده از یک جداکننده تهی و تگ های مداخله ای یک بایتی کدگذاری می شود که اندازه داده های بعدی را تعیین می کند. این آسیبپذیری به دلیل این واقعیت ایجاد میشود که در کد تجزیه فهرست، یک فیلد با اندازه در متغیری با نوع عدد صحیح علامتگذاری شده ("len = data[pos]") کپی میشود. بر این اساس، اگر مقداری در فیلد با بیشترین مجموعه بیت مشخص شود، این مقدار در عملگر شرطی به عنوان یک عدد منفی و بررسی حداکثر اندازه مجاز ("if (len > 63 || len + pos) درک می شود. + 1 > datalen) {“) کار نخواهد کرد، که منجر به فراخوانی memcpy با پارامتری می شود که اندازه داده های کپی شده از اندازه بافر بیشتر است.
منبع: opennet.ru