XFS-da bloklangan qurilma ma'lumotlarini o'qishga imkon beruvchi zaiflik

XFS fayl tizimi kodida zaiflik (CVE-2021-4155) aniqlandi, bu mahalliy imtiyozsiz foydalanuvchiga foydalanilmagan blok ma'lumotlarini to'g'ridan-to'g'ri bloklangan qurilmadan o'qish imkonini beradi. XFS drayverini o'z ichiga olgan 5.16 dan eski Linux yadrosining barcha asosiy versiyalari ushbu muammoga ta'sir qiladi. Tuzatish 5.16 versiyasiga, shuningdek 5.15.14, 5.10.91, 5.4.171, 4.19.225 va hokazo yadro yangilanishlariga kiritilgan. Tarqatishlardagi muammoni hal qilish uchun yaratilayotgan yangilanishlar holatini quyidagi sahifalarda kuzatish mumkin: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Zaiflik ikkita XFSga xos ioctl(XFS_IOC_ALLOCSP) va ioctl(XFS_IOC_FREESP) ning noto'g'ri xatti-harakati tufayli yuzaga keladi, ular yadro bo'ylab fallocate() tizim chaqiruvining funktsional analogidir. Bloklarga moslashtirilmagan fayl hajmini oshirganda, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP keyingi blok chegarasigacha quyruq baytlarini nolga qaytarmaydi. Shunday qilib, standart blok hajmi 4096 bayt bo'lgan XFS-da tajovuzkor har bir blokdan oldingi yozma ma'lumotlarni 4095 baytgacha o'qiy oladi. Bu sohalarda oʻchirilgan fayllar, defragmentatsiya qilingan fayllar va bloklangan fayllar maʼlumotlari boʻlishi mumkin.

Oddiy ekspluatatsiya prototipidan foydalanib, tizimingizni muammoni tekshirishingiz mumkin. Agar tavsiya etilgan buyruqlar ketma-ketligini bajargandan so'ng, Shekspir matnini o'qish mumkin bo'lsa, u holda FS drayveri zaifdir. Dastlab XFS bo'limini namoyish qilish uchun o'rnatish ildiz huquqlarini talab qiladi.

ioctl(XFS_IOC_ALLOCSP) va ioctl(XFS_IOC_FREESP) funksiyalari standart fallocate() bilan amalda bir xil boʻlgani va ularning yagona farqi maʼlumotlarning sizib chiqishi boʻlgani uchun ularning mavjudligi orqa eshikka oʻxshaydi. Yadrodagi mavjud interfeyslarni o'zgartirmaslik umumiy siyosatiga qaramay, Linusning taklifiga binoan keyingi versiyada ushbu ioctllarni butunlay olib tashlashga qaror qilindi.

Manba: opennet.ru

a Izoh qo'shish