در زیرسیستم eBPF، که به شما امکان میدهد هندلرهایی را برای ردیابی، تجزیه و تحلیل عملکرد زیرسیستم و مدیریت ترافیک اجرا کنید، درون هسته اجرا میشوند. Linux یک آسیبپذیری (CVE-2021-29154) در یک ماشین مجازی ویژه با JIT کشف شد که به یک کاربر محلی اجازه میدهد کد خود را در سطح هسته اجرا کند. این مشکل تا نسخه ۵.۱۱.۱۲ ادامه دارد و هنوز در توزیعهای (Debian, Ubuntu، RHEL، Fedora، SUSE، Arch). این اصلاحیه به صورت یک پچ (patch) در دسترس است.
به گفته محققانی که این آسیبپذیری را کشف کردند، آنها یک نمونه اولیه از بهرهبرداری کارآمد برای سیستمهای ۳۲ و ۶۴ بیتی x86 توسعه دادهاند که میتواند توسط یک کاربر غیرمجاز مورد استفاده قرار گیرد. شرکت Red Hat خاطرنشان میکند که شدت این مشکل به دسترسی کاربر به فراخوانی سیستم eBPF بستگی دارد. به عنوان مثال، در RHEL و اکثر توزیعهای دیگر Linux در پیکربندی پیشفرض، اگر 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 مربوط به خطای سرریز عدد صحیح هنگام مدیریت اشارهگرها است که منجر به دسترسیهای حدسی خارج از محدوده میشود. این مشکلات قبلاً در نسخههای هسته ۵.۱۱.۸، ۵.۱۰.۲۵، ۵.۴.۱۰۷، ۴.۱۹.۱۸۲ و ۴.۱۴.۲۲۷ برطرف شدهاند و همچنین در بهروزرسانیهای هسته برای اکثر توزیعها گنجانده شدهاند. Linuxمحققان یک نمونه اولیه از یک آسیبپذیری را توسعه دادهاند که به یک کاربر غیرمجاز اجازه میدهد دادهها را از حافظه هسته استخراج کند.
منبع: opennet.ru
