تم الكشف عن تقنية لاستغلال ثغرة أمنية في النظام الفرعي tty الخاص بنواة Linux

نشر باحثون من فريق Google Project Zero طريقة لاستغلال ثغرة (CVE-2020-29661) في تنفيذ معالج TIOCSPGRP ioctl من النظام الفرعي tty لنواة Linux، كما فحصوا بالتفصيل آليات الحماية التي يمكن أن تمنع مثل هذه الثغرة. نقاط الضعف.

تم إصلاح الخلل المسبب للمشكلة في Linux kernel في 3 ديسمبر من العام الماضي. تظهر المشكلة في النوى حتى الإصدار 5.9.13، لكن معظم التوزيعات أصلحت المشكلة في تحديثات حزم النواة المقدمة في العام الماضي (Debian، RHEL، SUSE، Ubuntu، Fedora، Arch). تم العثور على ثغرة أمنية مماثلة (CVE-2020-29660) في وقت واحد أثناء تنفيذ استدعاء TIOCGSID ioctl، ولكن تم إصلاحها بالفعل في كل مكان.

سبب المشكلة هو حدوث خطأ عند ضبط الأقفال، مما يؤدي إلى حالة سباق في كود drivers/tty/tty_jobctrl.c، والذي تم استخدامه لإنشاء شروط الاستخدام بعد التوفر المستغلة من مساحة المستخدم من خلال معالجات ioct عن طريق استدعاء TIOCSPGRP. تم عرض استغلال عملي لتصعيد الامتيازات على Debian 10 باستخدام kernel 4.19.0-13-amd64.

وفي الوقت نفسه، لا تركز المقالة المنشورة كثيرًا على تقنية إنشاء برمجيات إكسبلويت العاملة، بل على الأدوات الموجودة في النواة للحماية من مثل هذه الثغرات الأمنية. الاستنتاج غير مريح؛ لا يتم استخدام أساليب مثل تجزئة الذاكرة في الكومة والتحكم في الوصول إلى الذاكرة بعد تحريرها في الممارسة العملية، لأنها تؤدي إلى انخفاض في الأداء، والحماية المستندة إلى CFI (تكامل التحكم في التدفق)، والتي كتل الاستغلال في المراحل اللاحقة من الهجوم، تحتاج إلى تحسين.

عند النظر في ما يمكن أن يحدث فرقًا على المدى الطويل، فإن ما يبرز هو استخدام المحللات الثابتة المتقدمة أو استخدام لغات آمنة للذاكرة مثل لهجات Rust وC ذات التعليقات التوضيحية الغنية (مثل Checked C) للتحقق الحالة أثناء مرحلة البناء: الأقفال والأشياء والمؤشرات. تتضمن طرق الحماية أيضًا تنشيط وضع Panic_on_oops، وتبديل بنيات kernel إلى وضع القراءة فقط، وتقييد الوصول إلى مكالمات النظام باستخدام آليات مثل seccomp.

المصدر: opennet.ru

إضافة تعليق