تم استغلال الثغرات الأمنية في نواة Linux عن بعد عبر البلوتوث

تم التعرف على ثغرة أمنية في Linux kernel (CVE-2022-42896) ، والتي يمكن استخدامها لتنظيم تنفيذ التعليمات البرمجية عن بُعد على مستوى النواة عن طريق إرسال حزمة L2CAP مصممة خصيصًا عبر البلوتوث. بالإضافة إلى ذلك ، تم تحديد مشكلة أخرى مماثلة (CVE-2022-42895) في معالج L2CAP الذي يمكنه تسريب محتوى ذاكرة kernel في حزم معلومات التكوين. ظهرت الثغرة الأمنية الأولى منذ أغسطس 2014 (kernel 3.16) ، والثانية منذ أكتوبر 2011 (kernel 3.0). تم إصلاح الثغرات الأمنية في إصدارات Linux kernel 6.1.0 و 6.0.8 و 4.9.333 و 4.14.299 و 4.19.265 و 5.4.224 و 5.10.154 و 5.15.78. يمكنك تتبع الإصلاح في التوزيعات على الصفحات التالية: Debian و Ubuntu و Gentoo و RHEL و SUSE و Fedora و Arch.

تم نشر نماذج الاستغلال الأولية التي تعمل على Ubuntu 22.04 لإثبات إمكانية حدوث هجوم عن بُعد. لتنفيذ الهجوم ، يجب أن يكون المهاجم في نطاق Bluetooth - لا يلزم إجراء اقتران مسبق ، ولكن يجب أن تكون تقنية Bluetooth نشطة على الكمبيوتر. بالنسبة للهجوم ، يكفي معرفة عنوان MAC الخاص بجهاز الضحية ، والذي يمكن تحديده عن طريق الاستنشاق أو ، في بعض الأجهزة ، محسوبًا على أساس عنوان Wi-Fi MAC.

الثغرة الأولى (CVE-2022-42896) ناتجة عن الوصول إلى منطقة ذاكرة تم تحريرها بالفعل (خالية من الاستخدام) في تنفيذ وظائف l2cap_connect و l2cap_le_connect_req - بعد إنشاء قناة عبر استدعاء رد الاتصال new_connection ، لم يكن القفل تم تعيينه ، ولكن تم ضبط عداد الوقت (__set_chan_timer) ، بعد انقضاء المهلة ، واستدعاء وظيفة l2cap_chan_timeout ومسح القناة دون التحقق من إنهاء العمل مع القناة في وظائف l2cap_le_connect *.

المهلة الافتراضية هي 40 ثانية وكان من المفترض أن حالة السباق لا يمكن أن تحدث مع مثل هذا التأخير ، ولكن اتضح أنه بسبب خطأ آخر في معالج SMP ، كان من الممكن الاتصال بالمؤقت على الفور والوصول إلى حالة السباق. يمكن أن تؤدي مشكلة في l2cap_le_connect_req إلى تسرب ذاكرة kernel ، وفي l2cap_connect يمكنها الكتابة فوق محتويات الذاكرة وتنفيذ التعليمات البرمجية الخاصة بك. يمكن تنفيذ الخيار الأول للهجوم باستخدام Bluetooth LE 4.0 (منذ عام 2009) ، والثاني باستخدام Bluetooth BR / EDR 5.2 (منذ عام 2020).

الثغرة الأمنية الثانية (CVE-2022-42895) ناتجة عن تسرب الذاكرة المتبقية في وظيفة l2cap_parse_conf_req ، والتي يمكن استخدامها للحصول عن بُعد على معلومات حول المؤشرات إلى هياكل kernel عن طريق إرسال طلبات تكوين معدة خصيصًا. في وظيفة l2cap_parse_conf_req ، تم استخدام بنية l2cap_conf_efs ، والتي لم يتم تهيئة الذاكرة المخصصة لها مسبقًا ، ومن خلال التلاعب بعلامة FLAG_EFS_ENABLE ، كان من الممكن تحقيق تضمين البيانات القديمة من المكدس في الحزمة. تحدث المشكلة فقط في الأنظمة التي تم فيها إنشاء النواة باستخدام خيار CONFIG_BT_HS (معطل افتراضيًا ، ولكن تم تمكينه في بعض التوزيعات ، مثل Ubuntu). يتطلب الهجوم الناجح أيضًا ضبط المعلمة HCI_HS_ENABLED عبر واجهة الإدارة على true (غير مستخدم افتراضيًا).

المصدر: opennet.ru

إضافة تعليق