Уязвимость в драйвере NTFS3: подготовленный образ даёт root в Linux
В драйвере файловой системы NTFS3 из ядра Linux обнаружена уязвимость, позволяющая локальному пользователю поднять привилегии до root. Достаточно подключить USB-накопитель с заранее подготовленным образом NTFS — и в системе появляется исполняемый файл с установленным битом setuid, принадлежащий суперпользователю.
Как это работает
Об уязвимости сообщает Phoronix со ссылкой на рассылку разработчиков NTFS3. Нашедший проблему Вова Токарев объясняет: если в MFT образа заранее прописать значения $LXUID=0, $LXGID=0 и $LXMOD=0104755, то в момент монтирования тома система получает готовый setuid-root бинарник. Никакого вызова setxattr() при этом не требуется — расширенные атрибуты уже лежат на диске, поэтому проверка -EPERM не срабатывает.
Корень проблемы — строка в fs/ntfs3/xattr.c, где режим файла считывается напрямую из недоверенных данных на диске:
inode->i_mode = le32_to_cpu(value[2]);
Таким образом биты S_ISUID и S_ISGID подгружаются прямо из образа, которым управляет злоумышленник. Ситуацию усугубляет то, что настольные автомонтировщики вроде udisks по умолчанию монтируют NTFS с опцией suid. В итоге любому локальному пользователю достаточно вставить подготовленную флешку, чтобы получить euid=0.
Исправление есть, но его не применили
Автор предлагает однострочную заплатку: при чтении режима файла сбрасывать опасные биты через маску & ~(S_ISUID | S_ISGID). По его словам, у него есть полноценный proof-of-concept и рабочая демонстрация атаки.
Примечательно другое: об уязвимости сообщили разработчикам приватно ещё около двух месяцев назад, но реакции не последовало. Не дождавшись реакции, исследователь раскрыл детали публично. На момент публикации заметки основной драйвер NTFS3 в ядре по-прежнему остаётся уязвимым.
Есть и хорошая новость: проблема, судя по всему, не затрагивает более новый альтернативный NTFS-драйвер, который параллельно развивается в основном дереве ядра. Пользователям, работающим с NTFS-разделами, до выхода исправления стоит с осторожностью относиться к чужим накопителям и, при возможности, отключить автоматическое монтирование с флагом suid.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.