یک آسیبپذیری (CVE-2021-29154) در زیرسیستم eBPF شناسایی شد که به شما امکان میدهد تا کنترلکنندههایی را برای ردیابی، تجزیه و تحلیل عملکرد زیرسیستمها و مدیریت ترافیک اجرا کنید، که در داخل هسته لینوکس در یک ماشین مجازی خاص با JIT اجرا میشود. کاربر محلی برای دستیابی به اجرای کد خود در سطح هسته. این مشکل تا نسخه 5.11.12 (شامل) ظاهر می شود و هنوز در توزیع ها (Debian، Ubuntu، RHEL، Fedora، SUSE، Arch) برطرف نشده است. اصلاح به صورت پچ در دسترس است.
به گفته محققانی که این آسیبپذیری را شناسایی کردند، آنها توانستند یک نمونه اولیه از این اکسپلویت برای سیستمهای 32 و 64 بیتی x86 ایجاد کنند که میتواند توسط یک کاربر غیرمجاز استفاده شود. با این حال، Red Hat خاطرنشان می کند که شدت مشکل بستگی به این دارد که آیا تماس سیستم eBPF برای کاربر قابل دسترسی باشد یا خیر. برای مثال، در RHEL و اکثر توزیعهای لینوکس دیگر در پیکربندی پیشفرض، اگر BPF JIT فعال باشد و کاربر دارای حقوق CAP_SYS_ADMIN باشد، میتوان از این آسیبپذیری سوء استفاده کرد. به عنوان یک راه حل، توصیه می شود BPF JIT را با استفاده از دستور: echo 0 > /proc/sys/net/core/bpf_jit_enable غیرفعال کنید.
این مشکل به دلیل یک خطا در محاسبه افست دستورالعمل های شاخه در طول فرآیند تولید کد ماشینی کامپایلر JIT ایجاد می شود. به طور خاص، هنگام تولید دستورالعمل های شاخه، به این توجه نمی شود که افست ممکن است پس از عبور از مرحله بهینه سازی تغییر کند. از این نقص می توان برای تولید کد ماشین غیرعادی و اجرای آن در سطح هسته استفاده کرد.
قابل ذکر است که این تنها آسیب پذیری اخیر در زیرسیستم eBPF نیست. در پایان ماه مارس، دو آسیبپذیری دیگر در هسته شناسایی شد (CVE-2020-27170، CVE-2020-27171)، که امکان استفاده از eBPF را برای دور زدن محافظت در برابر آسیبپذیریهای کلاس Spectre فراهم میکند که امکان تعیین محتوای حافظه هسته را فراهم میکند. در نتیجه ایجاد شرایط برای اجرای سوداگرانه برخی عملیات. حمله Spectre مستلزم وجود توالی خاصی از دستورات در کدهای ممتاز است که منجر به اجرای گمانهزنی دستورالعملها میشود. در eBPF، چندین راه برای تولید چنین دستورالعمل هایی از طریق دستکاری با برنامه های BPF که برای اجرا ارسال می شوند، یافت شده است.
آسیبپذیری CVE-2020-27170 توسط دستکاری اشارهگر در تأییدکننده BPF ایجاد میشود که باعث میشود عملیاتهای گمانهزنی به منطقهای خارج از مرزهای بافر دسترسی پیدا کنند. آسیبپذیری CVE-2020-27171 به دلیل یک خطای زیر جریان اعداد صحیح در هنگام کار با اشارهگرها است که منجر به دسترسی احتمالی به دادههای خارج از بافر میشود. این مشکلات قبلاً در نسخههای هسته 5.11.8، 5.10.25، 5.4.107، 4.19.182 و 4.14.227 برطرف شدهاند و همچنین در بهروزرسانیهای هسته برای اکثر توزیعهای لینوکس گنجانده شدهاند. محققان یک نمونه اولیه اکسپلویت را آماده کرده اند که به کاربر غیرمجاز اجازه می دهد تا داده ها را از حافظه هسته استخراج کند.
منبع: opennet.ru