Sårbarhet i XFS som gör att råblockenhetsdata kan läsas

En sårbarhet (CVE-2021-4155) har identifierats i XFS-filsystemkoden som tillåter en lokal oprivilegierad användare att läsa oanvända blockdata direkt från en blockenhet. Alla större versioner av Linux-kärnan äldre än 5.16 som innehåller XFS-drivrutinen påverkas av detta problem. Fixeringen inkluderades i version 5.16, såväl som i kärnuppdateringar 5.15.14, 5.10.91, 5.4.171, 4.19.225, etc. Statusen för uppdateringar som genereras för att åtgärda problemet i distributioner kan spåras på dessa sidor: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Sårbarheten orsakas av det felaktiga beteendet hos två XFS-specifika ioctl(XFS_IOC_ALLOCSP) och ioctl(XFS_IOC_FREESP), som är en funktionell analog till det kärnomfattande fallocate()-systemanropet. När du ökar en filstorlek som inte är blockjusterad, återställer ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP inte slutbyten till noll förrän nästa blockgräns. Således, på XFS med en standardblockstorlek på 4096 byte, kan en angripare läsa upp till 4095 byte av tidigare skrivna data från varje block. Dessa områden kan innehålla data från raderade filer, defragmenterade filer och filer med deduplicerade block.

Du kan testa ditt system för problemet med en enkel exploateringsprototyp. Om det, efter att ha utfört den föreslagna sekvensen av kommandon, är möjligt att läsa Shakespeares text, är FS-drivrutinen sårbar. Att initialt montera en XFS-partition för demonstration kräver root-privilegier.

Eftersom ioctl(XFS_IOC_ALLOCSP) och ioctl(XFS_IOC_FREESP) har praktiskt taget samma funktionalitet som standard fallocate(), och deras enda skillnad är dataläckage, liknar deras närvaro som en bakdörr. Trots den allmänna policyn att inte ändra befintliga gränssnitt i kärnan, på förslag av Linus, beslutades det att helt ta bort dessa ioctls i nästa version.

Källa: opennet.ru

Lägg en kommentar