Уязвимость в ядре Linux, позволяющая обойти ограничения user namespace
В ядре Linux в коде трансляции uid/gid из пространства имен идентификаторов пользователей (user namespace) в основной набор идентификаторов выявлена уязвимость (CVE-2018-18955), позволяющая непривилегированному пользователю, имеющему полномочия администратора в изолированном контейнере (CAP_SYS_ADMIN), обойти ограничения безопасности и получить доступ к ресурсам вне текущего пространства имен идентификаторов. Например, при использовании общей файловой системы в контейнере и хост-окружении можно через манипуляции с inode прочитать содержимое /etc/shadow в основном окружении.
Уязвимость вызвана ошибкой в ядре 4.15, внесенной в октябре прошлого года, и исправлена в выпусках 4.18.19, 4.19.2 и 4.20-rc2. Проблема присутствует в функции map_write, определенной в файле kernel/user_namespace.c, и вызвана некорректной обработкой вложенных пространств идентификаторов пользователей, в которых используется более 5 диапазонов UID или GID. В частности, трансляция из пространства идентификаторов в ядре работает корректно, но не выполняется при обратном преобразовании (из ядра в пространство идентификаторов).
Уязвимость присутствует в дистрибутивах, использующих ядро 4.15 и более новые выпуски, например, в Ubuntu 18.04/18.10, Arch Linux и Fedorа (в (Arch и Fedora уже доступно ядро 4.19.2 с исправлением). RHEL и SUSE не подвержены проблеме. В Debian и Red Hat Enterprise Linux поддержка "user namespace" по умолчанию не активирована, но она включена в Ubuntu и Fedora.