Ranjivost u XFS koja omogućava čitanje sirovih podataka blok uređaja

Ranjivost (CVE-2021-4155) je otkrivena u kodu XFS sistema datoteka koji omogućava lokalnom neprivilegovanom korisniku da čita neiskorištene podatke o bloku direktno sa blok uređaja. Sve glavne verzije Linux kernela starije od 5.16 koje sadrže XFS drajver su pogođene ovim problemom. Ispravka je uključena u verziju 5.16, kao i ažuriranja kernela 5.15.14, 5.10.91, 5.4.171, 4.19.225, itd. Status generiranja ažuriranja s otklanjanjem problema u distribucijama može se pratiti na ovim stranicama: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Ranjivost je uzrokovana netačnim ponašanjem dva XFS-specifična ioctl(XFS_IOC_ALLOCSP) i ioctl(XFS_IOC_FREESP), koji su funkcionalni analog fallocate() sistemskog poziva za cijeli kernel. Kada povećavate veličinu datoteke koja nije blokovski poravnata, XFS_IOC_ALLOCSP/XFS_IOC_FREESP ioctl ne resetuje repne bajtove do sljedeće granice bloka. Dakle, na XFS-u sa standardnom veličinom bloka od 4096 bajtova iz svakog bloka, napadač može pročitati do 4095 bajtova prethodno upisanih podataka. Ova područja mogu sadržavati podatke iz izbrisanih datoteka, defragmentiranih datoteka i datoteka s dedupliciranim blokovima.

Možete provjeriti da li vaš sistem ima problema pomoću jednostavnog prototipa eksploatacije. Ako je nakon izvršenja predloženog niza naredbi moguće pročitati Shakespearov tekst, onda je FS drajver ranjiv. Početno montiranje XFS particije za demonstraciju zahtijeva prava superkorisnika.

Pošto su ioctl(XFS_IOC_ALLOCSP) i ioctl(XFS_IOC_FREESP) skoro identične funkcionalnosti standardnom fallocate(), a njihova jedina razlika je curenje podataka, njihovo prisustvo je kao backdoor. Uprkos opštoj politici ne menjanja postojećih interfejsa u kernelu, na Linusov predlog, doneta je odluka da se ovi ioctl potpuno uklone u sledećoj verziji.

izvor: opennet.ru

Dodajte komentar