Sårbarhed i XFS, der tillader læsning af rå blokenhedsdata

En sårbarhed (CVE-2021-4155) er blevet opdaget i XFS-filsystemkoden, der tillader en lokal uprivilegeret bruger at læse ubrugte blokdata direkte fra en blokenhed. Alle større versioner af Linux-kernen ældre end 5.16, der indeholder XFS-driveren, er berørt af dette problem. Rettelsen var inkluderet i version 5.16, samt kerneopdateringer 5.15.14, 5.10.91, 5.4.171, 4.19.225 osv. Status for generering af opdateringer med eliminering af problemet i distributioner kan spores på disse sider: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Sårbarheden er forårsaget af den forkerte opførsel af to XFS-specifikke ioctl(XFS_IOC_ALLOCSP) og ioctl(XFS_IOC_FREESP), som er den funktionelle analog til fallocate()-kernedækkende systemkald. Når du øger en filstørrelse, der ikke er blokjusteret, nulstiller XFS_IOC_ALLOCSP/XFS_IOC_FREESP ioctl'erne ikke halebytene før den næste blokgrænse. På en XFS med en standardblokstørrelse på 4096 bytes kan en angriber således læse op til 4095 bytes af tidligere skrevne data fra hver blok. Disse områder kan indeholde data fra slettede filer, defragmenterede filer og filer med deduplikerede blokke.

Du kan tjekke dit system for et problem med en simpel udnyttelsesprototype. Hvis det, efter at have udført den foreslåede rækkefølge af kommandoer, er muligt at læse Shakespeares tekst, så er FS-driveren sårbar. Den indledende montering af XFS-partitionen til demonstrationen kræver superbrugerrettigheder.

Da ioctl(XFS_IOC_ALLOCSP) og ioctl(XFS_IOC_FREESP) er næsten identiske i funktionalitet med standard fallocate(), og deres eneste forskel er datalækage, er deres tilstedeværelse som en bagdør. På trods af den generelle politik om ikke at ændre eksisterende grænseflader i kernen, efter forslag fra Linus, er der blevet truffet beslutning om fuldstændigt at fjerne disse ioctls i den næste version.

Kilde: opennet.ru

Tilføj en kommentar