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)
Ответ на: комментарий от anonymous

У вендузятников - да, и зоопарк вирусов у 90%.

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

ад для любого нормального человека

ты еще скромно умолчал что там USE флаги переименовывают от релиза к релизу(каждый минорный релиз у какойто самой мелкой и непонятной либы парсинга скобочек переименованы флаги,или у монстров типа QT полныое переименование половины флагов)...не буду писать много все это и так знают

если ты не разработчик и не компиляешь ядро/систему для своего сервера/серверов то эта вся морока просто впустую и никому не нужна

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

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

давай по факту, например когда я собираю ядро я включаю 1) драйвера 2) поддержку нужных файловых систем 3) systemd.... эээ... все)

Остальное по необходимости. Для виртуализации может поддержка KVM понадобиться, для шифрования Cryptographic API, для впн каких нибудь TUN/TAP интерфейсы, для серверов можно Timer frequency понизить... но все это либо тебе не нужно, либо нужно и ты сам уже знаешь об этом, либо тебе не будет лишним узнать об этом раз уж ты с этим работаешь. Все остальное уже включено по дефолту. Ну разве что для ноутбуков еще можно в поиске набрать марку ноута и посмотреть какие там для него опции в ядре есть, но ты меня в жизни не убедишь что использование поиска это скил не доступный «нормальным людям».

+ Если определенному софту нужны какие либо опции ядра он проверит их при установке и попросит выставить если их нет.

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

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

По поводу переименования флагов. У меня вот прописаны специальные флаги для всяких gvfs, transmission, php, evince... строчек 15-20, уже наверно года 3 ничего не менялось.

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

Ты не понял. Ты гость, тебе админы делают свой контейнер с правами виртуального рута в этом контейнере. Ты заходишь в этот контейнер и создаешь файл с suid, потому что в этом контейнере ты как бы рут.

А затем запускаешь этот файл вне контейнера, гле ты гость. И получаешь права рута вне контейнера, где тебе никто таких прав не давал.

Теперь суть дыры понятна?

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

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

AVL2 ★★★★★
()

Принцип виртуализации в принципе ущербен. А лишние сущности - любимое место обитания как мелких глюков, так и серьёзных уязвимостей.

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

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

Я так делаю, значить я true linux-оид! Круто!

anonymous
()

Ну, хорошо, ладно, решето так решето. Но вы только представьте, сколько болеее эпичных уязвимостей в венде, о которых никто не будет сообщать во всеуслышание, только в узкой среде программеров, работающих на некрософт, будет известно об оных, и то, не всё... А по поводу решета — оно везде есть. Вопрос только в диаметре отверстий решета.

Desmond_Hume ★★★★★
()

В недавнем релизе Linux 4.4 устранена уязвимость

Ух ты, 4.4 оказывается вышла. Здорово!

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

это тебе любой гентушник подтвердит

Домашняя Gentoo с базовым профилем (не desktop даже), ядро собрано без genkernel, все ненужное вычещено юзами.

Никакой мороки, ниразу ничего не падало, не ломалось, никаких костылей во время обновлений (unstable ветка), все просто работает и работает так, как мне надо. Сплошное удовольствие от системы.

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

«Лучше день потерять - потом за 5 минут долететь» (c)

:-D

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

Руление гентой уже давно превратилось в казуальный квест с «Press Y to win»
даже конфиг ядра:

$ make help | grep config
  clean		  - Remove most generated files but keep the config and
  mrproper	  - Remove all generated files + config + various backup files
  config	  - Update current config utilising a line-oriented program
  nconfig         - Update current config utilising a ncurses menu based
  menuconfig	  - Update current config utilising a menu based program
  xconfig	  - Update current config utilising a Qt based front-end
  gconfig	  - Update current config utilising a GTK+ based front-end
  oldconfig	  - Update current config utilising a provided .config as base
  localmodconfig  - Update current config disabling modules not loaded
  localyesconfig  - Update current config converting local mods to core
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps
  defconfig	  - New config with default from ARCH supplied defconfig
  savedefconfig   - Save current config as ./defconfig (minimal config)
  allnoconfig	  - New config where all options are answered with no
  allyesconfig	  - New config where all options are accepted with yes
  allmodconfig	  - New config selecting modules when possible
  alldefconfig    - New config with all symbols set to default
  randconfig	  - New config with random answer to all options
  listnewconfig   - List new options
  olddefconfig	  - Same as silentoldconfig but sets new symbols to their
  kvmconfig	  - Enable additional options for kvm guest kernel support
  xenconfig       - Enable additional options for xen dom0 and guest kernel support
  tinyconfig	  - Configure the tiniest possible kernel
  i386_defconfig           - Build for i386
  x86_64_defconfig         - Build for x86_64
  make O=dir [targets] Locate all output files in «dir», including .config
т.е. в первый раз ты можешь сгенерить конфиг, например, через make localmodconfig
при обновлении - make oldconfig, при этом будет спрашивать про новые опции (Y/N/m/?, при этом в "?" почти везде есть что-то типо «If unsure, say N»), но если не интересно что там нового прилетело - make silentoldconfig

можно, конечно, и день убить, при особом желании
но чаще это просто запуск скрипта, вариантов которого тут уже было с 100500

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

наличие мульена ручек не означает что их нужно крутить в обязательном порядке, но можно крутануть, если понадобилось
ну и : «не крути все ручки сразу» (с)
как-то так

anTaRes ★★★★
()

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

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

Один раз потратил, а дальше при обновлениях редко когда много новых опций за раз приходит и в большинстве своём это разнообразные драйверы, которые можно на автомате пролистывать.

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

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

выше уже сказали что СЕЙЧАС генту можно поставить в слепую с минимальными знаниями,но мы не про это

так вот именно «перековыривая» все опции один раз-ты станивишься разработчиком ОС,ибо к следущему обновлению-часть опций сломают,еще к следущему-еще раз сломают

и ты начнешь их фиксить,и у тебя накопиться неслабое количество патчей для «фиксов use флагов генты под <legacy> use флаги»-и в один момент ты сделаешь свой дистрибутив

так и появился калькулейт-линукс

и зачем этим занималься обычным людям совсем не ясно

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

ткчто в реальности в генте все с точностью до наоборот - ты можешь неделю ныть на форумах бинарных дистров : «Почему пакет собрали так, а не иначе», искать в репах от васяна альтернативные сборки

непонял логику предложения

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

а уж юзеры генты и подавно

anonymous
()

решето

anonymous
()

Вроде после https://lwn.net/Articles/543273/ все дистры ввели USER_NS=n в связи с высокой вероятностью возникновения новых эксплоитов, завязанных на USER_NS.

Проверяю, как у меня в бубунте. И что бы вы думоли? USER_NS=y.

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

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

Это ж день убить можно...

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

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

Нет я такого не говорил. Я постебался над тем что человеку 1 день нужен что бы ядро настроить, а в генте еще и use флаги есть.

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

Зочем нам RISC-V/lowRISC?

как и Minix будет широко известна в узком кругу - бюджет освоят и рассосутся

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

Ты поосторожней в выражениях а то и без бюджета рассосешься :)

anonymous
()

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

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

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

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

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

Опций чуть больше чем дофига а данная еще имеет значение

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

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

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

«А вот у моего товарища, не две, а пять двоек за год!»

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

Возможно и обратное - пользовательское приложение на «хосте» может влиять на работу приложений в контейнерах. Можно использовать unprivileged user namespaces, но нужно бояться самих unprivileged-контейнеров и их потенциальных уязвимостей.

Вобщем контейнеры это, конечно, круто, модно, молодежно, но и чрезвычайно не безопасно.

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

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

Это делается 1 раз.

anonymous
()

В ClamAV добавьте сигнатуры этих вирусов!

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

Ну прям перепись знатоков всех опций ядра. Но вот что-то не вериться если честно. Не когда-то давно я сам знал наизусть, но с тех пор как-то опций добавилось :)

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

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

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

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

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

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

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

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

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

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

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

Не, ну ты слов из песни не выкидывай:

Why is the latest Intel hardware unsupported in libreboot? #intel

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. If you have an Intel based system affected by the problems described below, then you should get rid of it as soon as possible.

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

А я просто на старом ядре сижу :)
3.12 на десктопе, на остальных 3.10 и 3.4
4.3 конечно собрал недавно, но я ещё не занимался настройкой - там даже звук не работает.

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

Я не утверждаю, сам-то я его точно не видел.

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

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

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

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

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

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