Cпецифичные для Ubuntu уязвимости в OverlayFS, позволяющие поднять свои привилегии

В поставляемых в Ubuntu пакетах с ядром Linux выявлены уязвимости, вызванные внесением специфичных для Ubuntu патчей в реализацию модуля OverlayFS. Уязвимости позволяют повысить свои привилегии в системе и по оценке выявивших проблемы исследователей могут быть эксплуатированы примерно в 40% установок Ubuntu. Уязвимости проявляются только в пакетах с ядром для Ubuntu и устранены в обновлениях, выпущенных 26 июля (Ubuntu 23.04, 22.04, 20.04, 18.04, 16.04, 14.04 и др.).

Уязвимость CVE-2023-2640 вызвана добавлением в 2018 году в модуль OverlayFS специфичного для Ubuntu изменения, реализующего функции для установки и удаления отдельных расширенных атрибутов файлов (trusted.overlayfs.* xattr) без проверки прав доступа. Так как для выполнения данной функции требуется предварительная блокировка inode, подразумевалось, что вызывающий функцию уже имеет привилегии, необходимые для низкоуровневой работы с ФС.

Изначально данное изменение распространялось только на атрибуты trusted.overlayfs.* и не представляло опасности. Но в 2022 году в основную реализацию OverlayFS в ядре Linux был добавлен патч, конфликтующий со специфичными для Ubuntu исправлениями, после которого проверка оказалась отключена для всех расширенных атрибутов, а не только для trusted.overlayfs. Через манипуляцию с пространствами имён идентификаторов пользователя (user namespace) непривилегированный пользователь мог выполнить монтирование OverlayFS и установить расширенные атрибуты для файлов в примонтированной ФС, в результате чего данные атрибуты переносились и для файлов в вышестоящем слое OverlayFS.

Вторая уязвимость CVE-2023-32629 также вызвана отсутствием должных проверок полномочий. Поверки не производились в функции ovl_copy_up_meta_inode_data из-за вызова процедуры ovl_do_setxattr вместо vfs_setxattr не только при доступе к внутренним расширенным атрибутам оверлейного слоя. Как и в случае с первой уязвимостью, изначально внесённое для Ubuntu исправление не приводило к уязвимости и проблема появилась только после изменения основной реализации OverlayFS, произведённого в 2019 году.

Заявлено, что для эксплуатации выявленных уязвимостей можно использовать уже доступные в открытом доступе рабочие эксплоиты, созданные для прошлой уязвимости в модуле OverlayFS. Для совершения атаки необходимо, чтобы в системе было разрешено монтирование разделов OverlayFS непривилегированным пользователем.
В качестве обходного пути блокирования уязвимостей достаточно отключить возможность создания непривилегированными пользователями пространств имён идентификаторов пользователей, выполнив команды:

Release. Ссылка here.