ثغرة أمنية في libinput تؤدي إلى تنفيذ تعليمات برمجية عند توصيل جهاز ضار

قامت مكتبة libinput 1.20.1، التي توفر مكدس إدخال موحد يسمح لك باستخدام نفس وسائل معالجة الأحداث من أجهزة الإدخال في البيئات المستندة إلى Wayland وX.Org، بإزالة الثغرة الأمنية (CVE-2022-1215)، التي يسمح لك بتنظيم تنفيذ التعليمات البرمجية الخاصة بك عند توصيل جهاز إدخال معدّل/محاكي خصيصًا بالنظام. تتجلى المشكلة في البيئات المستندة إلى X.Org وWayland، ويمكن استغلالها عند توصيل الأجهزة محليًا وعند التعامل مع الأجهزة باستخدام واجهة Bluetooth. إذا كان خادم X يعمل كجذر، فإن الثغرة الأمنية تسمح بتنفيذ التعليمات البرمجية بامتيازات مرتفعة.

سبب المشكلة هو وجود خطأ في تنسيق السطر في الكود المسؤول عن إخراج معلومات اتصال الجهاز إلى السجل. على وجه الخصوص، قامت وظيفة evdev_log_msg، باستخدام استدعاء snprintf، بتغيير سلسلة التنسيق الأصلية لإدخال السجل، والتي تمت إضافة اسم الجهاز إليها كبادئة. بعد ذلك، تم تمرير السلسلة المعدلة إلى الدالة log_msg_va، والتي بدورها تستخدم الدالة printf. وبالتالي، فإن الوسيطة الأولى لـ printf، والتي تم تطبيق تحليل أحرف التنسيق عليها، تحتوي على بيانات خارجية لم يتم التحقق من صحتها، ويمكن للمهاجم بدء تلف المكدس عن طريق التسبب في قيام الجهاز بإرجاع اسم يحتوي على أحرف تنسيق سلسلة (على سبيل المثال، "Evil %s") .

المصدر: opennet.ru

إضافة تعليق