чийки блок түзмөк маалыматтарды окууга мүмкүндүк берет 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 толугу менен жок кылуу чечими кабыл алынган.

Source: opennet.ru

Комментарий кошуу