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)

Ответ на: комментарий от Dead

Еще остались тру-линуксоиды, которые делают подобное для своего десктопчика? Да и на серверах, как правило, используются ядра от дистропроизводителей, т.к. обновляются регулярно в плане фикса уязвимостей.

Почти каждый пользователь Gentoo. К примеру я.

И редкие suseводы), например - я)

uname -a: Linux linux 4.4.0-1-desktop #1 SMP PREEMPT Tue Jan 12 13:00:28 EET 2016 i686 i686 i386 GNU/Linux

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

Почти каждый пользователь Gentoo.

т.е. пользователи Gentoo действительно сидят и втыкают какая опция для чего нужна? Это ж день убить можно...

Можно и день,первый раз. Хотя есть свои хитрости как ускорить этот процесс. А далее по накатанной, только периодически подправляя от релиза к релизу. Например, при переходе с 4.3.3 на 4.4, мне пришлось подправить USB раздел, так как не определялась радио-клавиатура). Там немного внесли изменения в структуру.

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

Я не знаю, я ведь ни разу не пробовал собрать ядро, действительно строго отвечающее поставленным требования и понятия не имею, что количество опция там сотни, если не тысячи.

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

Что знать все опции в ядре тем более нереально. Зачем они и какие ставить.

Что многие опции будучи включеными или выключеными тупо приводят к поломке сборки. И собрать ядро произвольной конфигурации все равно не получится.

Что даже зная и располагая всеми знаниями об опциях ядра, собрать его разумно не получится, потому что многие проблемы узнаются гораздо позже с установкой нового софта, использованием новых возможностей или оборудования. Нужен опыт тысяч пользователей, который позволяет сделать универсальное ядро, подходящее пусть даже не всем, но очень многим полностью и требующее буквально включения буквально пары опций для тех, кому оно надо.

Что даже собрав то самое идеальное ядро, ты все равно не сможешь его оттестировать, как это делается в дистрах. А ведь даже в дистрах не весь софт работает из за странных опций в ядре или поломки! Что уж говорить про горе-энтузиаста, который собраз тыщщу модулей и не имея ни оборудования ни времени ни сил тысяч пользователей дистров, пытается что-то там оттестировать.

Но да, это ж я прикинулся дураком...

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

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

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

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

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

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

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

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

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

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

В конфиге ядра есть галочка «включить драйвер X».

Алсо, нет совершенно ничего сложного в том, чтобы прочесть весь список опций конфига ядра и разобраться в них. Их много, да, но любой достаточно эрудированный человек по названию и тексту хелпа сможет за минуту-две (worst case) понять, о чём конкретная опция и стоит ли её включать. А, ну да, ещё нужно знать, из чего состоит твой комп, его чипсет и список периферийных контроллеров.

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

Че за бредятина о высоких материях?))

Практически у каждого гентушника ядро собрано руками это факт. Gentoo достаточно распространенный дист, крутится и на серверах и на десктопах, то же факт. У всех все работает, и ни кто не тратит целый день на сборку ядра, мин 5 максимум.

TDrive ★★★★★
()
Ответ на: комментарий от AVL2

Что многие опции будучи включеными или выключеными тупо приводят к поломке сборки.

Какие например?

Что даже зная и располагая всеми знаниями об опциях ядра, собрать его разумно не получится, потому что многие проблемы узнаются гораздо позже с установкой нового софта

Приведи пример проблемы с софтом из за настроек ядра?

Нужен опыт тысяч пользователей, который позволяет сделать универсальное ядро

Зачем мне универсальное ядро?

А ведь даже в дистрах не весь софт работает из за странных опций в ядре или поломки!

Какой конкретно софт у тебя не работает?

Но да, это ж я прикинулся дураком...

Вот тут я уже не уверен.

TDrive ★★★★★
()
Ответ на: комментарий от Diesel4Power

It is extremely unlikely that any post-2008 Intel hardware will ever be supported in libreboot, due to severe security and freedom issues; so severe, that the libreboot project recommends avoiding all modern Intel hardware

Минут на пять подвис - не мог понять, нафиг нужна специальная либа для ребута, которая и работать-то толком нигде не может.

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

Проблема в этом костыле под названием suid. В современных ОС типа плана нет ни suid, ни этого самого рута.

Нет, он есть, но незримо. Точнее так root, это тот кто всю эту хрень настроил и кстати включить его усегда можно. До неочень давнего времени было вообще наоборот, его потом отключали, сейчас по дэфолту выключено, но все равно возможность включить есть а значит система может быть уязвима. Тут где-то год назад по этому поводу холивар был.

anc ★★★★★
()
Ответ на: комментарий от TDrive

О! Вопрос к знатоку опций ядра, как вырубить фрэймбуфер для консоли? Я вот тут недавно потыкался так сходу не нашел, а то что пробовал не сработало.

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

так и сборка ядра не специфика генты, просто раз гентушники тратят на это день - показываю куда смотреть, чтоб не тратить день

anTaRes ★★★★
()
Ответ на: комментарий от anc

Включить? Такого юзера ведь даже нет, как ты его включишь? И в чем результат этого включения?

loz ★★★★★
()
Ответ на: комментарий от Odalist

Хорошо сказано. У них они могут быть очень долго, а в Линуксе оперативно исправляются.

«начиная с ядра 3.18 до 4.4» - ну очень оперативно.

anc ★★★★★
()
Ответ на: комментарий от AVL2

Добавить нечего. Подписываюсь под всем. Единственное, что в 90-х да и начале 2000-х нормально можно было знать все опции, я пересобирал не парясь, при выходе новых ядер прочитать про новые опции не составляло труда, но вот со временем я понял что это уже как-то не нужно и все чаще лишняя трата времени. И причны тому вы описали очень правильно.

anc ★★★★★
()
Ответ на: комментарий от loz

Это у вас нет, как пользователя, но он есть, возвращаться к холивару неохото, но если вам скучно можите поискать в гугле.

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

возможно по зависимостям включается
проще сделать make nconfig

Device Drivers  --->
    Graphics support  --->
и глазами посмотреть что да как
по Shift+? там видно, Depends on / Selected by / Selects

anTaRes ★★★★
()
Ответ на: комментарий от loz

Смотрите «сначала была тьма...», тьфу ты «сначала был root...» тоже не то. Короче все эти системы с «гибким» распределением прав так или иначе запускаются от? Правильно «контролера» а вот контролировать контролера уже некому.
И еще раз, если интересно читаем гуглу. Настроения нет холиварить :)

anc ★★★★★
()
Ответ на: комментарий от anTaRes

То что оно по зависимостям включается я и без вас знаю. Я вопрос задал как отключить? Вы же позиционировали себя как «знатока всех опций ядра».

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

Вы же позиционировали себя как «знатока всех опций ядра».

нет

Я вопрос задал как отключить?

а я ответил: «ищи сам», если понадобится мне - я буду искать там

То что оно по зависимостям включается я и без вас знаю.

ну, если вопрос был задан на «слабо», то мне пофик
я доказывать ничего не собираюсь, и если прикол в том что выключить его тупо нельзя (типо вопрос с подвохом от «реального знатока всех опций ядра») - ну и хрен с ним

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

Вы же позиционировали себя как «знатока всех опций ядра».

нет

Действительно. Приношу свои извинения.
Тут просто столько знатоков выше было...

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

Ты же про вот это?

Each computer running Plan 9 has one user id that owns all the resources on that system — the scheduler, local disks, network interfaces, etc. That user, the host owner, is the closest analogue in Plan 9 to a Unix root account (although it is far weaker; rather than having special powers, as its name implies the host owner is just a regular user that happens to own the resources of the local machine). On a single-user system, which we call a terminal, the host owner is the id of the terminal’s user. Shared servers such as CPU servers normally have a pseudo-user that initially owns all resources. At boot time, the Plan 9 kernel starts a factotum executing as, and therefore with the privileges of, the host owner.

loz ★★★★★
()
Ответ на: комментарий от anc
  ┌───────────────────────────────────── Framebuffer Console support ──────────────────────────────────────┐
  │ CONFIG_FRAMEBUFFER_CONSOLE:                                                                            │
  │                                                                                                        │
  │ Low-level framebuffer-based console driver.                                                            │
  │                                                                                                        │
  │ Symbol: FRAMEBUFFER_CONSOLE [=y]                                                                       │
  │ Type  : tristate                                                                                       │
  │ Prompt: Framebuffer Console support                                                                    │
  │   Location:                                                                                            │
  │     -> Device Drivers                                                                                  │
  │       -> Graphics support                                                                              │
  │         -> Console display driver support                                                              │
  │   Defined at drivers/video/console/Kconfig:98                                                          │
  │   Depends on: HAS_IOMEM [=y] && VT [=y] && FB [=y] && !UML                                             │
  │   Selects: VT_HW_CONSOLE_BINDING [=y] && CRC32 [=y] && \                                               │
  │ FONT_SUPPORT [=y]                                                                                      │
  │   Selected by: DRM_KMS_FB_HELPER [=y] && HAS_IOMEM [=y] && \                                           │
  │ DRM_KMS_HELPER [=y] && !EXPERT [=y] || DRM_NOUVEAU [=n] && \                                           │
  │ HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && !EXPERT [=y]                                                 │
  │                                                                                                        │
mittorn ★★★★★
()
Ответ на: комментарий от anc

Возможно, ты ещё захочешь выключить CONFIG_FB, чтобы работала vga консоль или собрать его модулем.
Тогда тебе придётся выключить или собрать модулем это:

DRM_KMS_FB_HELPER [=y] && HAS_IOMEM [=y] && DRM_KMS_HELPER [=y] || DRM_NOUVEAU [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y]

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

Не фигня. Во первых DRM отключать я вроде как не хочу, интересует только отключение fb в консоли, все остальное шоб работало. Из того что пробовал, собирать модулем FRAMEBUFFER_CONSOLE так ужо кину не кажет. Т.е. vga console=y FRAMEBUFFER_CONSOLE=m

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

Невозможно использовать kms и vga консоль. такого просто не предусмотрели.
Но тем не менее, попробуй отрубить fb helper.
проблема в том, что будучи загруженным фреймбуфер отключает vga консоль навсегда.

mittorn ★★★★★
()
Ответ на: комментарий от TDrive

Приведи пример проблемы с софтом из за настроек ядра?

Powertop и аккаунтинг
Docker и cgroups

Первое что пришло в голову

wasd
()

хм.. я overlay юзала только в сборках для эмбеддеда. но там ядра старые, ибо железо слабенькое. а на десктопе он мне никогда не был нужен.

Iron_Bug ★★★★★
()
Ответ на: комментарий от mittorn

Я уже давно понял, что чего-то не того навертели. Раньше было проще.
Попробую, ядрышко не быстро конпеляется. Если не получиться буду задавать вопросы дальше :)

anc ★★★★★
()
Ответ на: комментарий от mittorn

Вобщем так солюшен и не найден, экспериментировал уже на виртуалке, только выпиливание дров помогает. А так, что бы просто выключить, как можно было в ядрах раньше чего-то не получается. Ну и хрен с ним. Спасибо что откликнулись.
ЗЫ А вот остальные знатоки которые кукарекали слились-таки. :)
ЗЫЫ Если че, ядро было совсем не свежее 3.10.17

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

У меня предыдущее 3.12 жутко глючило. Сейчас 4.3, наконец то я доволен. Правда особо новых опций не изучал, расположение известных мне не изменилось.

mittorn ★★★★★
()
Ответ на: комментарий от A-234

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

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

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