یک آسیبپذیری (CVE-2021-4155) در کد سیستم فایل XFS شناسایی شده است که به کاربر غیرمجاز محلی اجازه میدهد تا دادههای بلوک استفاده نشده را مستقیماً از یک دستگاه بلوک بخواند. تمام نسخه های اصلی هسته لینوکس قدیمی تر از 5.16 که حاوی درایور XFS هستند تحت تأثیر این مشکل قرار می گیرند. این اصلاح در نسخه 5.16 و همچنین در به روز رسانی هسته 5.15.14، 5.10.91، 5.4.171، 4.19.225 و غیره گنجانده شده است. وضعیت بهروزرسانیهایی که برای رفع مشکل در توزیعها ایجاد میشوند را میتوان در این صفحات دنبال کرد: Debian، RHEL، SUSE، Fedora، Ubuntu، Arch.
این آسیبپذیری ناشی از رفتار نادرست دو ioctl (XFS_IOC_ALLOCSP) و ioctl (XFS_IOC_FREESP) مخصوص XFS است که یک آنالوگ عملکردی فراخوانی سیستم Fallocate در سراسر هسته هستند. هنگام افزایش اندازه فایلی که با بلوک تراز نیست، ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP تا مرز بلوک بعدی، بایت های دنباله را صفر نمی کند. بنابراین، در XFS با اندازه بلوک استاندارد 4096 بایت، مهاجم می تواند تا 4095 بایت از داده های نوشته شده قبلی را از هر بلوک بخواند. این مناطق ممکن است حاوی داده هایی از فایل های حذف شده، فایل های یکپارچه سازی شده و فایل هایی با بلوک های حذف شده باشد.
شما می توانید سیستم خود را برای مشکل با استفاده از یک نمونه اولیه اکسپلویت آزمایش کنید. اگر پس از اجرای دنباله دستورات پیشنهادی، امکان خواندن متن شکسپیر وجود داشته باشد، درایور FS آسیب پذیر است. در ابتدا نصب یک پارتیشن XFS برای نمایش نیاز به امتیازات ریشه دارد.
از آنجایی که ioctl(XFS_IOC_ALLOCSP) و ioctl(XFS_IOC_FREESP) عملاً از نظر عملکرد مانند fallocate() استاندارد هستند و تنها تفاوت آنها نشت داده است، وجود آنها شبیه به درب پشتی است. علیرغم سیاست کلی عدم تغییر رابط های موجود در هسته، به پیشنهاد لینوس، تصمیم گرفته شد که این ioctl ها در نسخه بعدی به طور کامل حذف شوند.
منبع: opennet.ru