XFS ievainojamība, kas ļauj nolasīt neapstrādātus bloku ierīces datus

XFS failu sistēmas kodā ir identificēta ievainojamība (CVE-2021-4155), kas ļauj vietējam nepiederošam lietotājam nolasīt neizmantotos bloku datus tieši no blokierīces. Šī problēma skar visas galvenās Linux kodola versijas, kas vecākas par 5.16 un satur XFS draiveri. Labojums tika iekļauts versijā 5.16, kā arī kodola atjauninājumos 5.15.14, 5.10.91, 5.4.171, 4.19.225 utt. To atjauninājumu statusu, kas tiek ģenerēti, lai novērstu problēmu izplatījumos, var izsekot šajās lapās: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Ievainojamību izraisa divu XFS specifisku ioctl (XFS_IOC_ALLOCSP) un ioctl (XFS_IOC_FREESP) nepareiza darbība, kas ir kodola mēroga fallocate () sistēmas izsaukuma funkcionāls analogs. Palielinot faila lielumu, kas nav līdzināts blokam, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP neatiestata astes baitus uz nulli līdz nākamajai bloka robežai. Tādējādi XFS ar standarta bloka izmēru 4096 baiti uzbrucējs var nolasīt līdz 4095 baitiem iepriekš ierakstīto datu no katra bloka. Šajos apgabalos var būt dati no dzēstiem failiem, defragmentētiem failiem un failiem ar dedublētiem blokiem.

Varat pārbaudīt savu sistēmu, lai noteiktu problēmu, izmantojot vienkāršu ekspluatācijas prototipu. Ja pēc piedāvātās komandu secības izpildes ir iespējams nolasīt Šekspīra tekstu, tad FS draiveris ir neaizsargāts. Sākotnēji XFS nodalījuma uzstādīšanai demonstrācijai ir nepieciešamas root tiesības.

Tā kā ioctl(XFS_IOC_ALLOCSP) un ioctl(XFS_IOC_FREESP) pēc funkcionalitātes praktiski neatšķiras standarta fallocate(), un to vienīgā atšķirība ir datu noplūde, to klātbūtne ir līdzīga aizmugures durvīm. Neskatoties uz vispārējo politiku nemainīt esošās saskarnes kodolā, pēc Linus ieteikuma tika nolemts pilnībā noņemt šos ioctls nākamajā versijā.

Avots: opennet.ru

Pievieno komentāru