LINUX.ORG.RU

В ядре Linux устранена локальная уязвимость, позволяющая поднять привилегии до root

 , , ,


2

3

В недавнем релизе Linux 4.4 устранена уязвимость (CVE-2015-8660), позволяющая поднять привилегии до уровня администратора. Уязвимость связана с инфраструктурой OverlayFS при использовании user namespaces.

User namespaces (пространство имён пользователей) позволяет использовать в рамках изолированного окружения любой идентификатор пользователя, в том числе и root (0). Это упрощает создание виртуальных окружений и контейнеров, а также позволяет сохранить один и тот же id пользователя в разных контейнерах, при этом производится абстракция от реальных системных id. Также разрешается проблема монтирования файловых систем от не-администратора.

Механизм OverlayFS позволяет создать многослойную структуру, в которой верхний уровень ФС будет перекрывать нижний. Таким образом можно над read-only файловой системой примонтировать другой раздел, при этом приоритет у дублирующихся файлов отдаётся верхним уровням. Для пользователя OverlayFS прозрачна и выглядит так, как если бы это была цельная файловая система.

Возможно создать виртуального пользователя с правами root в изолированном окружении для него и примонтировать внешнюю файловую систему. Ошибка в коде OverlayFS заключалась в том, что при изменении привилегий файла на оверлейной файловой системе виртуальным администратором становилось возможным создать файл с suid-битом и получить доступ к нему от настоящего пользователя извне изолированного окружения. Таким образом можно повысить привилегии до уровня root.

Ошибка была актуальна начиная с ядра 3.18 до 4.4. Часть дистрибутивов уже приняла патчи с исправлениями, и пользователям рекомендуется обновиться.

Также стоит заметить, что подобные ошибки могут возникнуть и при работе некоторых других модулей. Проверить, включена ли у вас эта возможность, можно командой ls /proc/self/ns|grep user (если отключена, вывод будет пустым). Отключить можно опцией при сборке ядра (CONFIG_USER_NS=n), но стоит заметить, что это может привести к недоступности некоторых функций.

Доступен пример эксплойта.

OpenNet

>>> Подробности

★★★★★

Проверено: Klymedy ()
Последнее исправление: JB (всего исправлений: 14)
Ответ на: комментарий от A-234

Вы уверены что в опциях нужных вам нет уязвимостей?

Я уверен в том, что уязвимости в отключённых опциях нельзя эксплуатировать.

man поверхность атаки

Deleted
()
Ответ на: комментарий от Deleted

«Я уверен в том, что уязвимости в отключённых опциях нельзя эксплуатировать.»

Сын спрашивает у отца: - Папа, а чем умные от дураков отличаются? - Видишь ли, сынок, умные всегда сомневаются, а дураки всегда во всем уверены. - Ты уверен в этом, папа? - Абсолютно, сынок!

anonymous
()
Ответ на: комментарий от anonymous

Сын спрашивает у отца: - Папа, а чем умные от дураков отличаются? - Видишь ли, сынок, умные всегда сомневаются, а дураки всегда во всем уверены. - Ты уверен в этом, папа? - Абсолютно, сынок!

Мысль полезная. И, безусловно, иметь абсолютную уверенность в чем-либо может дорого стоить.

Одно но. Есть уязвимый объект A, он входит в множество {A,B,C,D}, и в этом множестве (что логично) потенциально возможно эксплуатировать уязвимость А. В множестве {B,C,D} уязвимость объекта A эксплуатировать невозможно, поэтому что этого объекта в множестве нет.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Зачастую уязвимость как проявляется, так и закрывается совместным использованием нескольких объектов.

То есть, проблема в объекте А, но этот объект используется через Б, в котором дыры нет и поэтому уязвимость не работает. Однако умный логик отключает ненужный ему объект Б и остается с дырой в объекте А один на один...

Кстати, есть ненулевой шанс иметь в таком случае вечный зеро-дей эксплойт, работающий как раз у тех, кто приложил все усилия к тому, чтобы закрыться от уязвимостей...

AVL2 ★★★★★
()
Последнее исправление: AVL2 (всего исправлений: 1)
Ответ на: комментарий от AVL2

То есть, проблема в объекте А, но этот объект используется через Б, в котором дыры нет и поэтому уязвимость не работает. Однако умный логик отключает ненужный ему объект Б и остается с дырой в объекте А один на один...

Если объект А возможно использовать не через объект Б, то почему в первом случае отсутствует уязвимость?

Если имеется ввиду что-то вроде отключения сетевого экрана то да, это понятно, что в таком случае отключение не уменьшит площадь атаки, а наоборот увеличит.

Я говорил об отключении ненужного функционала именно с целью уменьшения площади атаки.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от A-234

Спасибо Кэп, но я имел в виду совершенно другое.

Что в включённых опциях могут быть уязвимости? Да, конечно могут (и есть, вероятнее всего). Это очевидно.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.