مشکلات امنیتی در وصله‌های پیشنهادی یکی از کارمندان هواوی برای محافظت از هسته لینوکس

توسعه دهندگان پروژه Grsecurity قرعه کشی کرد توجه به وجود یک آسیب پذیری بی اهمیت قابل بهره برداری در مجموعه پچ HKSP (Huawei Kernel Self Protection)، چند روز پیش پیشنهاد شده برای بهبود امنیت هسته لینوکس. موقعیت یادآوری می کند قاب با سامسونگ، که در آن تلاش برای بهبود امنیت سیستم منجر به ظهور یک آسیب پذیری جدید شد و به خطر انداختن دستگاه ها آسان تر شد.

وصله های HKSP توسط یکی از کارمندان هواوی منتشر شده است، شامل ذکر نام هوآوی در نمایه GitHub و از کلمه Huawei در نام پروژه (HKSP - Huawei Kernel Self Protection) استفاده شده است. در همان زمان، نمایندگان هوآوی ارتباط پروژه HKSP با این شرکت را تکذیب کردند و اعلام کردند که این کد به ابتکار شخصی کارمند توسعه یافته است، یک پروژه رسمی هوآوی نیست و در محصولات این شرکت استفاده نمی شود. بر صفحه GitHub HKSP عطف به ماسبق پس از کشف آسیب پذیری ها نیز اضافه شده توجه داشته باشید که این پروژه در اوقات فراغت من برای اهداف تحقیقاتی در حال توسعه است.

HKSP شامل تغییراتی مانند تصادفی سازی offset ها در ساختار cred، محافظت در برابر حملات به فضای نام شناسه کاربر (فضای نام pid)، جداسازی پشته پردازش از ناحیه mmap، تشخیص تماس های مضاعف به تابع kfree، مسدود کردن نشت ها از طریق شبه است. -FS /proc (/proc/ {modules, keys, key-users}, /proc/sys/kernel/* and /proc/sys/vm/mmap_min_addr, /proc/kallsyms)، تصادفی‌سازی آدرس فضای کاربر بهبود یافته، Ptrace اضافی حفاظت، حفاظت از smap و smep پیشرفته، امکان ممنوعیت ارسال داده ها از طریق سوکت های خام، مسدود کردن آدرس های نادرست در سوکت های UDP و بررسی یکپارچگی فرآیندهای در حال اجرا. همچنین شامل ماژول هسته Ksguard است که هدف آن شناسایی تلاش‌ها برای معرفی روت‌کیت‌های معمولی است.

وصله ها باعث Greg Kroah-Hartman، که مسئول حفظ شاخه پایدار هسته لینوکس است، مورد علاقه بود و از نویسنده درخواست کرد که پچ یکپارچه را به بخش هایی تقسیم کند تا بررسی و ارتقاء به هسته اصلی ساده شود. کیس کوک، سر پروژه بر ترویج همچنین فناوری حفاظت فعال در هسته لینوکس مثبت به وصله ها پاسخ داد و در میان مشکلات، توجه را به اتصال به معماری x86 و ماهیت اطلاع رسانی بسیاری از حالت ها جلب کرد که فقط اطلاعات مربوط به مشکل را ثبت می کنند، اما سعی نمی کنند آن را مسدود کنند.

مطالعه وصله توسط توسعه دهندگان Grsecurity خطاها و ضعف های زیادی را در کد نشان داد و همچنین عدم وجود یک مدل تهدید را نشان داد که به آنها اجازه می دهد به اندازه کافی در مورد قابلیت های پروژه قضاوت کنند. برای اینکه به وضوح نشان دهیم که کد بدون استفاده از روش های برنامه نویسی ایمن نوشته شده است، نمونه ای از یک آسیب پذیری بی اهمیت در کنترل کننده آورده شده است.
فایل /proc/ksguard/state، که با حقوق 0777 ایجاد شده است، به این معنی که همه دسترسی به نوشتن دارند. تابع ksg_state_write که برای تجزیه دستورات نوشته شده در /proc/ksguard/state استفاده می‌شود، یک بافر tmp[32] ایجاد می‌کند که داده‌ها بر اساس اندازه عملوند ارسال شده، بدون در نظر گرفتن اندازه بافر هدف و بدون در نظر گرفتن اندازه عملوند نوشته می‌شوند. بررسی پارامتر با اندازه رشته آن ها برای بازنویسی بخشی از پشته هسته، مهاجم فقط باید یک خط فرمت شده خاص در /proc/ksguard/state بنویسد.

static ssize_t ksg_state_write (فایل ساختار *فایل، const char __user *buf،
اندازه_t len، loff_t *offset)
{
مقدار u64;
char tmp[32];
size_t n = 0;

if (copy_from_user (tmp، buf، len))
بازگشت -1 ؛

value = simple_strtoul(tmp, '\0', 10);
...

نمونه اولیه بهره برداری:

char buf[4096] = { };
int fd = open(“/proc/ksguard/state”, O_WRONLY);
اگر (fd >= 0) {
write(fd، buf، sizeof(buf));
بستن (fd);
}

منبع: opennet.ru

اضافه کردن نظر