В ядре Linux в реализации файловой системы OverlayFS выявлена уязвимость (CVE-2023-0386), которую можно использовать для получения root-доступа на системах, в которых установлена подсистема FUSЕ и разрешено монтирование разделов OverlayFS непривилегированным пользователем (начиная с ядра Linux 5.11 с включением непривилегированных user namespace). Проблема устранена в ветке ядра 6.2. Публикацию обновлений пакетов в дистрибутивах можно проследить на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Атака производится через копирование файлов с флагами setgid/setuid из раздела, примонтированного в режиме nosuid, в раздел OverlayFS, имеющий слой, связанный с разделом, допускающим выполнение suid-файлов. Уязвимость близка к проблеме
CVE-2021-3847, выявленной в 2021 году, но отличается более низкими требованиями к эксплуатации – в старой проблеме требовались манипуляции с xattrs, которые ограничены при использования пространств имён идентификаторов пользователя (user namespace), а в новой проблеме используются биты setgid/setuid, которые специально не обрабатываются в user namespace.
Алгоритм совершения атаки:
- При помощи подсистемы FUSE монтируется ФС, в которой имеется принадлежащий пользователю root исполняемый файл с флагами setuid/setgid, доступным всем пользователям на запись. При монтировании FUSE выставляет режим “nosuid”.
- Отменяются (unshare) пространства имён пользователей и точек монтирования (user/mount namespace).
- Монтируется OverlayFS с указанием ранее созданной в FUSE ФС в качестве нижнего слоя и верхним слоем на базе каталога, допускающего возможность записи. Каталог верхнего слоя должен размещаться в ФС, при монтировании которой не используется флаг “nosuid”.
- Для suid-файла в FUSE-разделе утилитой touch меняется время модификации, что приводит к его копированию в верхний слой OverlayFS.
- При копировании ядро не убирает флаги setgid/setuid, что приводит к тому, что файл появляется в разделе, допускающем обработку setgid/setuid.
- Для получения прав root достаточно запустить файл с флагами setgid/setuid из каталога, прикреплённого к верхнему слою OverlayFS.
Дополнительно можно отметить раскрытие исследователями из команды Google Project Zero сведений о трёх уязвимостях, которые были исправлены в основной ветке ядра Linux 5.15, но не были перенесены в пакеты с ядром из RHEL 8.x/9.x и CentOS Stream 9.
- CVE-2023-1252 – обращение к уже освобождённой области памяти в структуре ovl_aio_req при одновременном совершении нескольких операций в OverlayFS, развёрнутой поверх ФС Ext4. Потенциально уязвимость позволяет повысить свои привилегии в системе.
- CVE-2023-0590 – обращение к уже освобождённой области памяти в функции qdisc_graft(). Предполагается, что эксплуатация ограничивается аварийным завершением.
- CVE-2023-1249 – обращение к уже освобождённой области памяти в коде записи coredump, возникающее из-за пропущенного вызова mmap_lock в file_files_note.
Предполагается, что эксплуатация ограничивается аварийным завершением.