• XSS.stack #1 – первый литературный журнал от юзеров форума

Уязвимость в XFS, позволяющая читать сырые данные блочного устройства

INC.

REVERSE SIDE OF THE MEDAL
Эксперт
Регистрация
02.02.2008
Сообщения
3 950
Реакции
1 872
В коде файловой системы XFS обнаружена уязвимость (CVE-2021-4155), позволяющая локальному непривилегированному пользователю читать данные неиспользуемых блоков напрямую с блочного устройства. Все значительные версии ядра Linux старше 5.16, содержащие драйвер XFS, подвержены этой проблеме. Исправление вошло в версию 5.16, а также в обновления ядер 5.15.14, 5.10.91, 5.4.171, 4.19.225 и т.д.

Уязвимость вызвана некорректным поведением двух специфичных для XFS ioctl(XFS_IOC_ALLOCSP) и ioctl(XFS_IOC_FREESP), которые являются функциональным аналогом общеядерного системного вызова fallocate(). При увеличении размера файла, не выровненного на размер блока, ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP не обнуляют хвостовые байты до следующей границы блока. Таким образом, на XFS со стандартным размером блока 4096 байт из каждого блока атакующий может прочитать до 4095 байт предыдущих записанных данных. В указанных областях могут содержаться данные удалённых файлов, дефрагментированных файлов, а также файлов с дедуплицированными блоками.

Проверить свою систему на наличие проблемы можно с помощью простого прототипа эксплоита. Если после выполнения предложенной последовательности команд удастся прочитать текст Шекспира, то драйвер ФС уязвим. Изначальное монтирование раздела XFS для демонстрации требует прав суперпользователя.

Поскольку ioctl(XFS_IOC_ALLOCSP) и ioctl(XFS_IOC_FREESP) по функциональности практически не отличаются от стандартного fallocate(), и единственным их отличием является утечка данных, их наличие похоже на бекдор. Несмотря на общую политику – не изменять существующие интерфейсы в ядре, – по предложению Линуса, принято решение полностью удалить эти ioctl'ы в следующей версии.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх