Dobësi në XFS që lejon leximin e të dhënave të papërpunuara të pajisjes së bllokut

Një cenueshmëri (CVE-2021-4155) është identifikuar në kodin e sistemit të skedarëve XFS që lejon një përdorues lokal të paprivilegjuar të lexojë të dhënat e bllokut të papërdorura drejtpërdrejt nga një pajisje bllokimi. Të gjitha versionet kryesore të kernelit Linux më të vjetër se 5.16 që përmbajnë drejtuesin XFS preken nga ky problem. Rregullimi u përfshi në versionin 5.16, si dhe në përditësimet e kernelit 5.15.14, 5.10.91, 5.4.171, 4.19.225, etj. Statusi i përditësimeve që krijohen për të rregulluar problemin në shpërndarje mund të gjurmohet në këto faqe: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Dobësia shkaktohet nga sjellja e gabuar e dy ioctl(XFS_IOC_ALLOCSP) dhe ioctl(XFS_IOC_FREESP) specifike për XFS, të cilat janë një analog funksional i thirrjes së sistemit fallocate() në të gjithë kernelin. Kur rritni një madhësi skedari që nuk është i lidhur me bllokun, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP nuk i rivendos bajtët e bishtit në zero deri në kufirin tjetër të bllokut. Kështu, në XFS me një madhësi standarde të bllokut prej 4096 bajte, një sulmues mund të lexojë deri në 4095 bajt të dhëna të mëparshme të shkruara nga secili bllok. Këto zona mund të përmbajnë të dhëna nga skedarë të fshirë, skedarë të defragmentuar dhe skedarë me blloqe të fshirë.

Ju mund të testoni sistemin tuaj për problemin duke përdorur një prototip të thjeshtë shfrytëzimi. Nëse, pas ekzekutimit të sekuencës së propozuar të komandave, është e mundur të lexohet teksti i Shekspirit, atëherë drejtuesi FS është i cenueshëm. Fillimisht montimi i një ndarjeje XFS për demonstrim kërkon privilegje rrënjësore.

Meqenëse ioctl(XFS_IOC_ALLOCSP) dhe ioctl(XFS_IOC_FREESP) janë praktikisht të njëjta në funksionalitet me standardin fallocate(), dhe ndryshimi i tyre i vetëm është rrjedhja e të dhënave, prania e tyre është e ngjashme me një derë të pasme. Pavarësisht politikës së përgjithshme të mosndryshimit të ndërfaqeve ekzistuese në kernel, me sugjerimin e Linus, u vendos që këto ioctl të hiqen plotësisht në versionin tjetër.

Burimi: opennet.ru

Shto një koment