Ranljivost v XFS, ki omogoča branje neobdelanih blokovnih podatkov naprave

V kodi datotečnega sistema XFS je bila ugotovljena ranljivost (CVE-2021-4155), ki lokalnemu neprivilegiranemu uporabniku omogoča branje neuporabljenih blokovnih podatkov neposredno iz blokirne naprave. Ta težava vpliva na vse večje različice jedra Linuxa, starejše od 5.16, ki vsebujejo gonilnik XFS. Popravek je bil vključen v različico 5.16, pa tudi v posodobitve jedra 5.15.14, 5.10.91, 5.4.171, 4.19.225 itd. Stanje posodobitev, ustvarjenih za odpravo težave v distribucijah, lahko spremljate na teh straneh: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Ranljivost povzroča nepravilno vedenje dveh za XFS specifičnih ioctl(XFS_IOC_ALLOCSP) in ioctl(XFS_IOC_FREESP), ki sta funkcionalni analog sistemskega klica fallocate() za celotno jedro. Pri povečanju velikosti datoteke, ki ni poravnana z bloki, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP ne ponastavi repnih bajtov na nič do naslednje meje bloka. Tako lahko na XFS s standardno velikostjo bloka 4096 bajtov napadalec prebere do 4095 bajtov predhodnih zapisanih podatkov iz vsakega bloka. Ta področja lahko vsebujejo podatke iz izbrisanih datotek, defragmentiranih datotek in datotek z dedupliciranimi bloki.

Svoj sistem lahko preizkusite glede težave z uporabo preprostega prototipa izkoriščanja. Če je po izvedbi predlaganega zaporedja ukazov mogoče prebrati Shakespearov tekst, je gonilnik FS ranljiv. Začetna namestitev particije XFS za predstavitev zahteva korenske pravice.

Ker sta ioctl(XFS_IOC_ALLOCSP) in ioctl(XFS_IOC_FREESP) praktično enaka po funkcionalnosti kot standardni fallocate(), njuna edina razlika pa je uhajanje podatkov, je njuna prisotnost podobna backdoorju. Kljub splošni politiki nespreminjanja obstoječih vmesnikov v jedru je bilo na predlog Linusa odločeno, da se ti ioctl v naslednji različici popolnoma odstranijo.

Vir: opennet.ru

Dodaj komentar