آسیب‌پذیری‌ها در هسته لینوکس از راه دور از طریق بلوتوث مورد سوء استفاده قرار می‌گیرند

یک آسیب پذیری (CVE-2022-42896) در هسته لینوکس شناسایی شده است که به طور بالقوه می تواند برای سازماندهی اجرای کد از راه دور در سطح هسته با ارسال یک بسته L2CAP طراحی شده از طریق بلوتوث استفاده شود. علاوه بر این، مشکل مشابه دیگری (CVE-2022-42895) در کنترل کننده L2CAP شناسایی شده است که می تواند منجر به نشت محتوای حافظه هسته در بسته های دارای اطلاعات پیکربندی شود. اولین آسیب پذیری از آگوست 2014 (هسته 3.16) و دومین آسیب پذیری از اکتبر 2011 (kernel 3.0) ظاهر شده است. آسیب‌پذیری‌ها در نسخه‌های 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.

برای نشان دادن امکان انجام یک حمله از راه دور، نمونه اولیه سوء استفاده منتشر شده است که روی اوبونتو 22.04 کار می کند. برای انجام یک حمله، مهاجم باید در محدوده بلوتوث قرار داشته باشد—پیوند پیش نیازی نیست، اما بلوتوث باید در رایانه فعال باشد. برای حمله کافی است که آدرس MAC دستگاه قربانی را بدانید که می‌توان آن را با sniff کردن مشخص کرد یا در برخی از دستگاه‌ها بر اساس آدرس مک Wi-Fi محاسبه کرد.

اولین آسیب‌پذیری (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 می تواند منجر به نشت حافظه هسته شود و در l2cap_connect می تواند منجر به بازنویسی محتویات حافظه و اجرای کد آن شود. اولین نوع حمله را می توان با استفاده از بلوتوث LE 4.0 (از سال 2009) انجام داد، دومی با استفاده از بلوتوث BR/EDR 5.2 (از سال 2020).

آسیب‌پذیری دوم (CVE-2022-42895) ناشی از نشت حافظه باقی‌مانده در تابع l2cap_parse_conf_req است که می‌توان از آن برای به دست آوردن اطلاعات از راه دور در مورد اشاره‌گرها به ساختارهای هسته با ارسال درخواست‌های پیکربندی ساخته‌شده خاص استفاده کرد. تابع l2cap_parse_conf_req از ساختار l2cap_conf_efs استفاده می‌کند، که حافظه اختصاص‌یافته برای آن از قبل راه‌اندازی نشده بود و با دستکاری پرچم FLAG_EFS_ENABLE، امکان گنجاندن داده‌های قدیمی از پشته در بسته وجود داشت. مشکل فقط در سیستم هایی ظاهر می شود که هسته با گزینه CONFIG_BT_HS ساخته شده است (به طور پیش فرض غیرفعال است، اما در برخی از توزیع ها فعال است، مانند اوبونتو). یک حمله موفق همچنین مستلزم تنظیم پارامتر HCI_HS_ENABLED از طریق رابط مدیریت بر روی true (به طور پیش فرض استفاده نمی شود) است.

منبع: opennet.ru

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