یک آسیبپذیری (CVE-2022-42896) در هسته لینوکس کشف شده است که میتواند به طور بالقوه برای اجرای کد سطح هسته از راه دور با ارسال یک بسته L2CAP دستکاری شده خاص از طریق بلوتوث مورد استفاده قرار گیرد. یک مشکل مشابه (CVE-2022-42895) نیز در کنترلکننده L2CAP کشف شده است که میتواند منجر به نشت حافظه هسته در بستههای پیکربندی شود. اولین آسیبپذیری از آگوست ۲۰۱۴ (هسته ۳.۱۶) و دومی از اکتبر ۲۰۱۱ (هسته ۳.۰) وجود داشته است. این آسیبپذیریها در نسخههای هسته لینوکس ۶.۱.۰، ۶.۰.۸، ۴.۹.۳۳۳، ۴.۱۴.۲۹۹، ۴.۱۹.۲۶۵، ۵.۴.۲۲۴، ۵.۱۰.۱۵۴ و ۵.۱۵.۷۸ برطرف شدهاند. میتوانید روند رفع مشکل در توزیعهای مختلف را در صفحات زیر پیگیری کنید: دبیان، اوبونتو، جنتو، RHEL، سوزه، فدورا، آرچ.
برای نشان دادن امکان انجام حمله از راه دور، نمونههای اولیهی اکسپلویت منتشر شده است که روی اوبونتو ۲۲.۰۴ کار میکنند. برای انجام این حمله، مهاجم باید در محدودهی بلوتوث باشد - جفتسازی قبلی لازم نیست، اما بلوتوث باید روی رایانه فعال باشد. این حمله نیاز به دانستن آدرس MAC دستگاه قربانی دارد که میتوان آن را با بو کشیدن یا در برخی دستگاهها، از طریق آدرس MAC وایفای محاسبه کرد.
اولین آسیبپذیری (CVE-2022-42896) ناشی از دسترسی پس از آزادسازی به یک ناحیه حافظه از قبل آزاد شده در پیادهسازی توابع l2cap_connect و l2cap_le_connect_req است. پس از ایجاد یک کانال از طریق فراخوانی new_connection، قفلی برای آن تنظیم نشده است، اما یک تایمر (__set_chan_timer) تنظیم شده است که پس از انقضای مهلت زمانی، تابع l2cap_chan_timeout را فراخوانی کرده و کانال را بدون بررسی تکمیل کار با کانال در توابع l2cap_le_connect* پاک میکند.
زمان انقضای پیشفرض ۴۰ ثانیه است و فرض بر این بود که با چنین تأخیری، شرایط رقابتی نمیتواند رخ دهد. با این حال، مشخص شد که یک اشکال دیگر در کنترلکننده SMP میتواند باعث شود تایمر فوراً فراخوانی شود و در نتیجه شرایط رقابتی ایجاد شود. نقص در l2cap_le_connect_req میتواند منجر به نشت حافظه هسته شود، در حالی که در l2cap_connect میتواند محتویات حافظه را بازنویسی کرده و کد نامشخصی را اجرا کند. اولین نوع حمله را میتوان با استفاده از بلوتوث LE 40 (از سال ۲۰۰۹) و دومی را با استفاده از بلوتوث BR/EDR 5.2 (از سال ۲۰۲۰) انجام داد.
آسیبپذیری دوم (CVE-2022-42895) ناشی از نشت حافظه باقیمانده در تابع l2cap_parse_conf_req است که میتواند برای به دست آوردن اطلاعات در مورد اشارهگرهای ساختار هسته از راه دور با ارسال درخواستهای پیکربندی دستکاریشده خاص، مورد سوءاستفاده قرار گیرد. تابع l2cap_parse_conf_req از ساختار l2cap_conf_efs استفاده میکرد که حافظه اختصاص داده شده برای آن از قبل مقداردهی اولیه نشده بود. با دستکاری پرچم FLAG_EFS_ENABLE، امکان گنجاندن دادههای قدیمی پشته در بسته وجود داشت. این مشکل فقط در سیستمهایی که هسته با گزینه CONFIG_BT_HS کامپایل میشود (به طور پیشفرض غیرفعال است، اما در برخی توزیعها مانند اوبونتو فعال است) خود را نشان میدهد. یک حمله موفقیتآمیز همچنین نیاز به تنظیم پارامتر HCI_HS_ENABLED از طریق رابط مدیریت به مقدار درست (به طور پیشفرض استفاده نمیشود) دارد.
منبع: opennet.ru
