Шикі блоктағы құрылғы деректерін оқуға мүмкіндік беретін XFS осалдығы

XFS файлдық жүйесінің кодында осалдық (CVE-2021-4155) анықталды, ол жергілікті артықшылығы жоқ пайдаланушыға пайдаланылмаған блок деректерін блоктау құрылғысынан тікелей оқуға мүмкіндік береді. XFS драйвері бар Linux ядросының 5.16-дан асқан барлық негізгі нұсқалары осы мәселеге әсер етеді. Түзету 5.16 нұсқасына, сондай-ақ 5.15.14, 5.10.91, 5.4.171, 4.19.225 және т.б. ядро ​​жаңартуларына енгізілген. Таратулардағы мәселені шешу үшін жасалатын жаңартулардың күйін мына беттерде бақылауға болады: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Осалдық екі XFS-арнайы ioctl(XFS_IOC_ALLOCSP) және ioctl(XFS_IOC_FREESP) қате әрекетінен туындайды, олар жалпы ядролық fallocate() жүйелік шақыруының функционалды аналогы болып табылады. Блок бойынша тураланбаған файл өлшемін ұлғайтқан кезде, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP келесі блок шекарасына дейін соңғы байттарды нөлге қайтармайды. Осылайша, стандартты блок өлшемі 4096 байт болатын XFS жүйесінде шабуылдаушы әрбір блоктан 4095 байт алдыңғы жазбаша деректерді оқи алады. Бұл аймақтарда жойылған файлдардан, дефрагментацияланған файлдардан және көшірме блоктары бар файлдардан алынған деректер болуы мүмкін.

Қарапайым эксплойт прототипін пайдаланып жүйеңізді мәселеге тексере аласыз. Егер ұсынылған командалар тізбегін орындағаннан кейін Шекспир мәтінін оқу мүмкін болса, онда FS драйвері осал болады. Бастапқыда көрсету үшін XFS бөлімін орнату түбірлік артықшылықтарды қажет етеді.

ioctl(XFS_IOC_ALLOCSP) және ioctl(XFS_IOC_FREESP) стандартты fallocate() функциясымен іс жүзінде бірдей болғандықтан және олардың айырмашылығы деректердің ағып кетуі болып табылады, олардың болуы бэкдорға ұқсас. Ядродағы бар интерфейстерді өзгертпеу туралы жалпы саясатқа қарамастан, Линустың ұсынысы бойынша келесі нұсқада бұл ioctls толығымен жою туралы шешім қабылданды.

Ақпарат көзі: opennet.ru

пікір қалдыру