PDA

Просмотр полной версии : Уязвимость в ядре Linux, позволяющая обойти ограничения user namespace


Suicide
23.11.2018, 08:45
В ядре Linux в коде трансляции uid/gid из пространства имён идентификаторов пользователей (user namespace) в основной набор идентификаторов выявлена (https://www.openwall.com/lists/oss-security/2018/11/16/1)уязвимость (https://bugs.chromium.org/p/project-zero/issues/detail?id=1712) (CVE-2018-18955 (https://security-tracker.debian.org/tracker/CVE-2018-18955)), позволяющая непривилегированному пользователю, имеющему полномочия администратора в изолированном контейнере (CAP_SYS_ADMIN), обойти ограничения безопасности и получить доступ к ресурсам вне текущего пространства имён идентификаторов. Например, при использовании общей файловой системы в контейнере и хост-окружении можно через прямое обращение к i-node прочитать содержимое файла /etc/shadow в основном окружении.

Уязвимость вызвана (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6397fac4915a) ошибкой в ядре 4.15, внесённой в октябре прошлого года. Проблема исправлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2f007dbe7e4c9583eea6eb04d60001e85c6f1bd)в выпусках 4.18.19, 4.19.2 и 4.20-rc2. Уязвимость присутствует в функции map_write(), определённой в файле kernel/user_namespace.c, и вызвана некорректной обработкой вложенных пространств идентификаторов пользователей, в которых используется более 5 диапазонов UID или GID. В данных условиях трансляция идентификаторов uid/gid из пространства имён в ядро (forward map) работает корректно, но не выполняется при обратном преобразовании (reverse map, из ядра в пространство идентификаторов).

Возникает ситуация, когда идентификатор пользователя 0 (root) корректно сопоставляется с идентификатором 0 в ядре при прямом преобразовании, но не отражает реальной ситуации при обратном преобразовании, которое используется в проверках inode_owner_or_capable() и privileged_wrt_inode_uidgid(). Таким образом при обращении к inode ядро считает, что пользователь имеет должные полномочия, несмотря на то, что используется id 0 не из основного набора идентификаторов пользователей, а из отдельного пространства имён.

Уязвимость присутствует в дистрибутивах, использующих ядро 4.15 и более новые выпуски, например, в Ubuntu 18.04/18.10 (https://people.canonical.com/~ubuntu-security/cve/2018/CVE-2018-18955.html), Arch Linux (https://security.archlinux.org/) и Fedorа (https://bugzilla.redhat.com/show_bug.cgi?id=1652681) (в Arch (https://security.archlinux.org/package/linux) и Fedora (https://bodhi.fedoraproject.org/updates/?releases=F28&type=security) уже доступно ядро 4.19.2 с исправлением). RHEL (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-18955) и SUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2018-18955) не подвержены проблеме. В Debian и Red Hat Enterprise Linux поддержка "user namespace" по умолчанию не активирована, но она включена в Ubuntu и Fedora.

22.11.2018

https://www.opennet.ru/opennews/art.shtml?num=49649​

altblitz
24.11.2018, 02:27
Дружно хвастаемся, и только здесь - какие мы умнички!

Вот эта самая уязвимость - таки не уязвимость, если при компиляции используется патч against user_space:


Code:
blitz@inode ~/asp/core/linux-ck (git)-[master] % uname -a
Linux inode 4.19.4-1-ck #1 SMP PREEMPT Fri Nov 23 20:12:27 CET 2018 x86_64 GNU/Linux