Уязвимость в OverlayFS, позволяющая повысить свои привилегии

Kate

Administrator
Команда форума
В ядре 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. Предполагается, что эксплуатация ограничивается аварийным завершением.
 
Сверху