Az XFS biztonsági rése, amely lehetővé teszi a nyers blokkeszközök adatainak olvasását

Sebezhetőséget (CVE-2021-4155) azonosítottak az XFS fájlrendszer kódjában, amely lehetővé teszi a helyi, jogosulatlan felhasználók számára a fel nem használt blokkadatok közvetlen beolvasását egy blokkeszközről. Ez a probléma a Linux kernel 5.16-nál régebbi, XFS-illesztőprogramot tartalmazó főbb verzióit érinti. A javítást az 5.16-os verzió, valamint az 5.15.14, 5.10.91, 5.4.171, 4.19.225 stb. kernelfrissítések tartalmazták. A disztribúciók problémájának megoldására generált frissítések állapota a következő oldalakon követhető nyomon: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

A sérülékenységet a két XFS-specifikus ioctl(XFS_IOC_ALLOCSP) és ioctl(XFS_IOC_FREESP) hibás viselkedése okozza, amelyek a kernelszintű fallocate() rendszerhívás funkcionális analógjai. Ha nem blokkhoz igazított fájlméretet növel, az ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP nem állítja vissza nullára a vége bájtokat a következő blokkhatárig. Így a 4096 bájtos szabványos blokkmérettel rendelkező XFS-en a támadó legfeljebb 4095 bájtnyi korábbi írott adatot olvashat ki minden blokkból. Ezek a területek tartalmazhatnak adatokat törölt fájlokból, töredezettségmentesített fájlokból és deduplikált blokkokkal rendelkező fájlokból.

Egy egyszerű exploit prototípus segítségével tesztelheti a rendszert a probléma keresésére. Ha a javasolt parancssorozat végrehajtása után be lehet olvasni Shakespeare szövegét, akkor az FS-illesztőprogram sebezhető. Az XFS-partíció demonstrációs célú csatlakoztatásához root jogosultság szükséges.

Mivel az ioctl(XFS_IOC_ALLOCSP) és az ioctl(XFS_IOC_FREESP) gyakorlatilag ugyanaz, mint a standard fallocate(), és egyetlen különbségük az adatszivárgás, ezért jelenlétük egy hátsó ajtóhoz hasonlít. Annak ellenére, hogy az általános irányelv nem változtat a kernelben meglévő interfészeken, Linus javaslatára úgy döntöttek, hogy ezeket az ioctl-eket teljesen eltávolítják a következő verzióban.

Forrás: opennet.ru

Hozzászólás