مشاكل أمنية في التصحيحات المقترحة من قبل أحد موظفي هواوي لحماية نواة لينكس

مطورو مشروع Grsecurity رسم الانتباه إلى وجود ثغرة أمنية يمكن استغلالها بشكل تافه في مجموعة التصحيح HKSP (هواوي كيرنل للحماية الذاتية) قبل أيام قليلة مقترح لتحسين أمان نواة لينكس. يذكر الوضع الحال مع سامسونج، حيث أدت محاولة تحسين أمان النظام إلى ظهور ثغرة أمنية جديدة وجعلت من السهل اختراق الأجهزة.

تم نشر تصحيحات HKSP بواسطة أحد موظفي Huawei، وتتضمن إشارة إلى Huawei في ملف تعريف GitHub، واستخدم كلمة Huawei في اسم المشروع (HKSP - Huawei Kernel Self Protection). وفي الوقت نفسه، نفى ممثلو هواوي ارتباط مشروع HKSP بالشركة وذكروا أن الكود تم تطويره بمبادرة شخصية من الموظف، وليس مشروعًا رسميًا لشركة هواوي ولا يستخدم في منتجات الشركة. على صفحة جيثب HKSP بأثر رجعي بعد الاكتشاف نقاط الضعف أيضا تمت أضافتة لاحظ أن المشروع يتم تطويره في وقت فراغي لأغراض البحث.

يتضمن HKSP تغييرات مثل التوزيع العشوائي للإزاحات في بنية الاعتماد، والحماية من الهجمات على مساحة اسم معرف المستخدم (مساحة اسم معرف المستخدم)، وفصل مكدس العملية عن منطقة mmap، واكتشاف الاستدعاءات المزدوجة إلى وظيفة kfree، ومنع التسريبات عبر الملف الزائف -FS /proc (/proc/ {modules,keys,key-users}, /proc/sys/kernel/* و /proc/sys/vm/mmap_min_addr, /proc/kallsyms)، تحسين التوزيع العشوائي لمساحة المستخدم، وتتبع إضافي الحماية، وتعزيز حماية smap وsmp، والقدرة على حظر إرسال البيانات عبر مآخذ التوصيل الأولية، وحظر العناوين غير الصحيحة في مآخذ UDP والتحقق من سلامة العمليات الجارية. ويتضمن أيضًا وحدة Ksguard kernel، والتي تهدف إلى اكتشاف محاولات إدخال برامج rootkit التقليدية.

بقع تسبب كان جريج كرواه-هارتمان، المسؤول عن الحفاظ على الفرع المستقر لنواة Linux، موضع اهتمام، وطلب من المؤلف تقسيم التصحيح المتجانس إلى أجزاء لتبسيط المراجعة والترقية إلى النواة الرئيسية. كيس كوك، رئيس مشروع في ترقية تقنية الحماية النشطة في Linux kernel أيضًا بشكل إيجابي استجاب للتصحيحات، ومن بين المشكلات، لفت الانتباه إلى الارتباط ببنية x86 وطبيعة الإشعارات للعديد من الأوضاع، التي تسجل فقط معلومات حول المشكلة، ولكن لا تحاول حظرها.

وكشفت دراسة التصحيح التي أجراها مطورو Grsecurity عن العديد من الأخطاء ونقاط الضعف في التعليمات البرمجية، كما أظهرت عدم وجود نموذج تهديد يسمح لهم بالحكم بشكل مناسب على قدرات المشروع. لتوضيح أن التعليمات البرمجية تمت كتابتها دون استخدام طرق برمجة آمنة، تم تقديم مثال على ثغرة أمنية تافهة في المعالج.
الملف /proc/ksguard/state، الذي تم إنشاؤه بالحقوق 0777، مما يعني أن كل شخص لديه حق الوصول للكتابة. تقوم وظيفة ksg_state_write، المستخدمة لتحليل الأوامر المكتوبة إلى /proc/ksguard/state، بإنشاء مخزن مؤقت tmp[32] يتم كتابة البيانات إليه بناءً على حجم المعامل الذي تم تمريره، دون الأخذ في الاعتبار حجم المخزن المؤقت المستهدف وبدون التحقق من المعلمة بحجم السلسلة. أولئك. للكتابة فوق جزء من مكدس kernel، يحتاج المهاجم فقط إلى كتابة سطر منسق خصيصًا إلى /proc/ksguard/state.

ثابت ssize_t ksg_state_write (ملف البنية * ملف، const char __user *buf،
size_t لين، loff_t * إزاحة)
{
قيمة u64؛
شار tmp [32] ؛
size_t ن = 0؛

إذا (copy_from_user(tmp, buf, len))
عودة -1 ؛

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

استغلال النموذج الأولي:

شار بوف[4096] = { };
int fd = open("/proc/ksguard/state", O_WRONLY);
إذا (فد >= 0) {
write(fd, buf, sizeof(buf));
إغلاق(فد);
}

المصدر: opennet.ru

إضافة تعليق