Failisüsteemi XFS koodis avastati haavatavus (CVE-2021-4155), mis võimaldab kohalikul mitteprivileegitud kasutajal lugeda andmeid kasutamata blokidelt otse blokiseadmest. Kõik märkimisväärsed Linuxi tuumaversioonid alates 5.16, mis sisaldavad XFS draiverit, on selle probleemi ohvriks. Parandus oli sisestatud versioonisse 5.16 ning samuti tuumauuendustes 5.15.14, 5.10.91, 5.4.171, 4.19.225 jne. Probleemi lahendamiseks uuenduste koostamise staatust jagatakse järgmiste lehtede kaudu: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.
Haavatavus on tingitud kahest XFS-le spetsiifilisest ioctl'ist (XFS_IOC_ALLOCSP ja XFS_IOC_FREESP), mis on funktsionaalsed vasteid üldkeelse süsteemikutsumise fallocate() jaoks. Kui faili suurust suurendatakse, ilma et see oleks plokkide suuruse järgi ühtlaselt jaotatud, ei nullita ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP saba bytes järgmise ploki piirini. Sel moel võib XFS-i standardse 4096-baidise ploki suurusega rünnaku korral lugeda kuni 4095 baiti eelnevalt kirjutatud andmeid. Nendes piirkondades võivad olla andmed kustutatud failide, defragmenteeritud failide ja dedupeeritud plokkidega failide kohta.
Süsteemi probleemi tuvastamiseks saab kasutada lihtsat eksploitide prototüüpi. Kui pakutud käsuahela täitmise järel õnnestub lugeda Shakespeare'i teksti, on failisüsteemi draiver haavatav. XFS-i partitsiooni algne mountimine demonstreerimiseks nõuab superkasutaja õigusi.
Kuna ioctl(XFS_IOC_ALLOCSP) ja ioctl(XFS_IOC_FREESP) erinevused standardse fallocate() funktsionaalsuse osas on peaaegu olematud ning nende ainus erinevus on andmelekked, näib nende olemasolu olevat tagauks. Vaatamata üldisele poliitikale – olemasolevaid liideseid südamikus mitte muuta – otsustati Linuse ettepanekul need ioctl’id järgmises versioonis täielikult eemaldada.
Allikas: opennet.ru
