The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

29.07.2018 08:57  В OpenBSD предложен новый системный вызов unveil() для изоляции ФС

Тео де Раадт (Theo de Raadt) представил патч с реализацией дополнительной защиты при помощи нового системного вызова unveil(), который дополняет механизм ограничения доступа к системным вызовам pledge(). Новый системный вызов планируют включить в состав выпуска OpenBSD 6.4. В настоящее время код для защиты при помощи unveil() добавлен в 37 приложений из базовой системы OpenBSD, активировать патч планируется когда число приложений будет доведено до 50.

Системный вызов unveil() предоставляет новый способ изоляции доступа к файловой системе, интегрируемый в код приложений. Суть защиты заключается в том, что первым вызовом unveil() для приложения полностью блокируется доступ ко всей ФС. После чего выборочно открывается возможность доступа для отдельных путей, с которыми может работать приложение (реализация "белого списка" - по умолчанию всё запрещено, а необходимые пути следует явно разрешить).

Поддерживаются флаги ограничения доступа, т.е. можно отдельно открыть доступ на чтение, запись и исполнение, можно запретить создание или удаление файлов. Например, можно открыть доступ на запись к /tmp, на запуск /bin/sh и на чтение /var/spool. Блокировка осуществляется через интеграцию дополнительных фильтров, работающих на уровне системных вызовов, связанных с файловыми операциями (open(), chmod(), rename() и т.п.).

  1. Главная ссылка к новости (http://undeadly.org/cgi?action...)
  2. OpenNews: В OpenBSD добавлен код программного отключения SMT (HyperThreading)
  3. OpenNews: Разбор ситуации с обвинением OpenBSD в нарушении эмбарго при исправлении уязвимости KRACK
  4. OpenNews: В состав OpenBSD-Current добавлен механизм защиты RETGUARD
  5. OpenNews: OpenBSD развивает Pledge, новый механизм изоляции приложений
  6. OpenNews: Выпуск OpenBSD 6.3
Лицензия: CC-BY
Тип: Программы
Ключевые слова: openbsd, unveil
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноняшка (?), 09:04, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +7 +/
    А если открыт допуск  на запуск /bin/sh , - что еще надо подлому коту Леопольду? ))
     
     
  • 2.4, Аноним (4), 09:15, 29/07/2018 [^] [ответить]    [к модератору]
  • +/
    Как и sudo на запуск любого контекста
     
     
  • 3.5, Catwoolfii (ok), 09:31, 29/07/2018 [^] [ответить]    [к модератору]
  • –1 +/
    Можно и не любого. Как настроишь, так и будет.
     
  • 3.28, Аноним (28), 18:28, 29/07/2018 [^] [ответить]    [к модератору]
  • +/
    > Как и sudo на запуск любого контекста
    > OpenBSD
    > sudo

    ну-ну.


     
  • 2.10, Аноним (10), 11:53, 29/07/2018 [^] [ответить]    [к модератору]
  • +/
    В принципе,  в сочетании с pledge можно как раз очень сильно ограничить возможности запускаемого шелла. Но пример, действительно, не самый удачный.
     
  • 2.59, Аноним (59), 00:59, 31/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Сам по себе /bin/sh не много умеет.
     
     
  • 3.62, PereresusNeVlezaetBuggy (ok), 13:21, 31/07/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    > Сам по себе /bin/sh не много умеет.

    Всего лишь запускать произвольные программы и открывать произвольные файлы, угу.

     
  • 1.2, Аноним (4), 09:06, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –4 +/
    AppArmor в бинарнике сотворили?
     
     
  • 2.24, Аноним (24), 16:30, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Тоже такая мысль сразу возникла.
     
  • 1.3, Аноним (3), 09:15, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    Странно ограничивать приложение из него самого. Еще и окажется, что надо исходники править и пересобрать программу, чтобы добавить доступ в нужное тебе место, которое не предусмотрели разработчики.
     
     
  • 2.6, Аноним (4), 09:35, 29/07/2018 [^] [ответить]    [к модератору]  
  • –5 +/
    Разработчикам стоит просто выпилить поддержку OpenBSD для решения проблемы.
     
     
  • 3.19, Аноним (28), 12:53, 29/07/2018 [^] [ответить]     [к модератору]  
  • +4 +/
    Разработчикам чего Решению какой именно проблемы Боюсь, выпиливание поддержки... весь текст скрыт [показать]
     
  • 2.7, anonymous (??), 11:02, 29/07/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Наоборот, только приложение автор приложения знает какие доступы ему нужны А ... весь текст скрыт [показать]
     
     
  • 3.9, Prototik (ok), 11:33, 29/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Ну да, и автор тоже великолепно знает, куда я хочу положить данные.
     
     
  • 4.13, anonymous (??), 12:07, 29/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Ну да, и автор тоже великолепно знает, куда я хочу положить данные.

    А что, у нас open уже мысли научился читать? Так или иначе белый путь приложение будет знать.

     
     
  • 5.20, Аноним (20), 15:12, 29/07/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    >Так или иначе белый путь приложение будет знать.

    C:\Program Files\Program name\Temp

     
     
  • 6.21, anonymous (??), 15:17, 29/07/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Я могу тоже написать любой путь Какая мысль скрыта за ним То что на системе по... весь текст скрыт [показать]
     
  • 3.11, Аноним (10), 11:58, 29/07/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Более того, именно само приложение знает, когда привилегии перестают быть нужны ... весь текст скрыт [показать]
     
  • 3.14, Аноним (14), 12:23, 29/07/2018 [^] [ответить]    [к модератору]  
  • +8 +/
    > Наоборот, только приложение (автор приложения) знает какие доступы ему нужны

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

     
     
  • 4.15, anonymous (??), 12:31, 29/07/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > Я автор софта для наложения смешных эффектов на фотки.

    Вам лучше так и оставаться на прикладном уровне и пользоваться android sdk. Ограничения по сисколам пока не для вас.

     
     
  • 5.27, .. (?), 18:17, 29/07/2018 [^] [ответить]    [к модератору]  
  • +6 +/
    man sarcasm
     
  • 2.16, aknor (?), 12:33, 29/07/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    Очевидное применение , - ограничивать любой интерпретатор  ...
     
  • 2.17, Аноним (28), 12:39, 29/07/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Странно не слышать ни разу о добровольном сбросе привилегий на случай уязвимос... весь текст скрыт [показать]
     
     
  • 3.45, Аноним (45), 00:54, 30/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Чувак, я ничерта не понял из того что ты сказал, но ты заговорил и достучался до моего сердца.
     
  • 2.31, Аноним (31), 19:57, 29/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Если приложение может прочитать путь из конфига, оно его и будет вайтлистить, не?
     
  • 2.35, PereresusNeVlezaetBuggy (ok), 20:47, 29/07/2018 [^] [ответить]     [к модератору]  
  • +5 +/
    unveil 8212 это защита от ситуаций, когда порядочная программа взламывается и... весь текст скрыт [показать]
     
  • 1.8, Alex (??), 11:21, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Это аналог firejail
    OpenBSD +1
     
     
  • 2.12, Аноним (10), 12:00, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Нет, это не аналог firejail. Приезжайте на LVEE, расскажу подробнее. ;)
     
  • 2.50, Аноним (50), 03:43, 30/07/2018 [^] [ответить]     [к модератору]  
  • +3 +/
    firejail и используемый там seccomp на бумаге гибче, но на практике абсолютно ... весь текст скрыт [показать]
     
  • 1.18, Аноним (18), 12:42, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Я в начале подумал, что системный вызов назвали unevil
     
     
  • 2.22, PereresusNeVlezaetBuggy (ok), 15:24, 29/07/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    Это обыгрывалось, да, только уже не помню, кем. :))
     
  • 1.23, Аноним (23), 16:06, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    когда хотели изобрести SELinux, но не догадались вынести список файлов в отдельный конфиг, чтобы не патчить весь софт.
     
     
  • 2.25, Аноним (28), 17:02, 29/07/2018 [^] [ответить]     [к модератору]  
  • +/
    Когда лапчато-перепончатые не в курсе, но гордо задранную гузку после высказыван... весь текст скрыт [показать]
     
  • 2.26, anonymous (??), 18:00, 29/07/2018 [^] [ответить]     [к модератору]  
  • +/
    Когда кто-то хотел сумничать, но громко напузырял Пути сцеплены с логикой прило... весь текст скрыт [показать]
     
     
  • 3.29, Аноним (29), 19:27, 29/07/2018 [^] [ответить]    [к модератору]  
  • –4 +/
    Что в SELinux костыльного? Реализация в ядре, гибкая настройка всего и всея в юзерспайсе. Опенбздишнекам стоило бы поучиться, а не дрчить протезной лапой, как обезьяна в "Кремниевой долине"
     
     
  • 4.30, adaww (?), 19:45, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    чувааак ! тут недавно нет бсд 8 вышла...;) с тем же pkgsrc...не нравится опенка ибашЪ юзай ее или фрю. и не иби мозги...
     
  • 4.32, Аноним (31), 20:38, 29/07/2018 [^] [ответить]     [к модератору]  
  • +5 +/
    Все Потому что написание правил selinux заслуженно считается крайне трудоемким ... весь текст скрыт [показать]
     
     
  • 5.36, PereresusNeVlezaetBuggy (ok), 20:54, 29/07/2018 [^] [ответить]     [к модератору]  
  • +/
    Верно Как раз для Chrome уже давно реализована песочница на базе pledge , тепе... весь текст скрыт [показать]
     
     
  • 6.37, Аноним (31), 20:55, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    В лялихе не через pledge, там seccomp.
     
     
  • 7.38, PereresusNeVlezaetBuggy (ok), 21:07, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Угу. К SECCOMP ещё несколько лет назад была масса вопросов (вроде возможности отыграть назад, фактически, выключая seccomp), сейчас — может, под давлением pledge? — часть из них решилась.
     
     
  • 8.40, Аноним (31), 21:28, 29/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Насчет отыграть не в курсе — можно ссылку?
     
     
  • 9.46, PereresusNeVlezaetBuggy (ok), 01:29, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    PR_SET_NO_NEW_PRIVS появился в 3.5 только, если я правильно разобрался.
     
     
  • 10.60, A. Stahl Is Gay (?), 13:04, 31/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Если я правильно понял описание, то это для того, чтобы потомки не могли делать то, что не может делать родитель.
     
     
  • 11.63, PereresusNeVlezaetBuggy (ok), 13:25, 31/07/2018 [^] [ответить]     [к модератору]  
  • +/
    И это тоже, так как в seccomp, насколько помню, привилегии просто наследуются В... весь текст скрыт [показать]
     
  • 4.34, PereresusNeVlezaetBuggy (ok), 20:43, 29/07/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    В OpenBSD механизмы ограничения системных вызовов были тогда, когда на Linux не было вообще ничего подобного. Это уже далеко не первое поколение.
     
     
  • 5.65, Аноним (65), 23:50, 05/08/2018 [^] [ответить]     [к модератору]  
  • +/
    RSBAC, позволяющий ограничить все что угодно в линухе, появился в 2000 году В т... весь текст скрыт [показать]
     
     
  • 6.66, PereresusNeVlezaetBuggy (ok), 02:22, 06/08/2018 [^] [ответить]    [к модератору]  
  • +/
    1. «Появился» он в виде патча, а не в mainline ядре. Напомните, когда он стал частью дефолтного ядра в каком-либо крупном дистрибутиве? Потому что сравнивать доступный где-то патч и изначально доступную и работающую функциональность как-то некорректно, не находите?

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

    2. OpenBSD работал на реальном железе и куче архитектур с момента рождения. В отличие от изначально x86-only Linux (я очень рад за ядро Linux, что сейчас оно может куда больше, чем в 1995-м). «А ты продолжай врать».

     
  • 4.42, Аноним (42), 22:48, 29/07/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Я сам линуксоид, но SELinux - переусложненная хрeнь, которая, мягко говоря, не у... весь текст скрыт [показать]
     
     
  • 5.44, Аноним (44), 00:24, 30/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Не знают и не могут знать.

    man pam
    man nss

     
     
  • 6.47, PereresusNeVlezaetBuggy (ok), 01:32, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    А это как раз много «хорошего» говорит об архитектуре PAM и NSS.

    Когда библиотека начинает делать за спиной приложения невесть что, жди беды. Круче PAM только QtWebEngine, который форкает процессы.

     
     
  • 7.55, Crazy Alex (ok), 19:15, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Вообще-то это называется "API" и "information hiding". Приложение должно знать то, что оно само делает. Как именно работают используемые им сервисы, оно знать и не должно. В том числе и куда они лезут - это уровень системы.
     
     
  • 8.57, PereresusNeVlezaetBuggy (ok), 19:42, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    > Вообще-то это называется "API" и "information hiding". Приложение должно знать то, что
    > оно само делает. Как именно работают используемые им сервисы, оно знать
    > и не должно. В том числе и куда они лезут -
    > это уровень системы.

    Это было бы information hiding, если бы таковые форки, открытие файловых дескрипторов и прочая, и прочая не влияли бы на работу приложения. Но ведь они влияют! В любой момент, получается, могут оказаться открыты только что закрытые файловые дескрипторы; обработчик сигнала может оказаться затёрт, или наоборот, оказаться вызванным в неожиданном окружении; состояние глобальной переменной может измениться; неожиданно окажется взятой какая-то блокировка (ручкой машет дед Лок), и ещё много вызывающих сбои ситуаций.

    Позиция «если вы вызовете эту функцию, то может произойти всё, что угодно, а если не вызовете — тем более, ваше приложение не может ни на что рассчитывать» удобна только для того, кто такое API реализует, но не для разработчика приложения, который не может более гарантировать пользователю корректную работу своей программы при одних и тех же настройках программы и под одной и той же ОС. Как следствие, головная боль появляется у пользователя/админа, что как бы противоречит исходной задаче, решаемой ИТ — делать пользователям хорошо.

    Так что далеко не всякая абстракция является качественной, увы.

     
  • 6.49, Аноним (50), 03:00, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Ты бы ещё LD_PRELOAD вспомнил
     
  • 4.53, КО (?), 10:16, 30/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    >Реализация в ядре, гибкая настройка всего и всея в юзерспайсе.

    И маленький ньюанс.
    Для ускорения всего и вся занесли чать Самбы в ядро (ну чтоб меньше переключений контекста).
    Все тру... И тут Селинукс начал вопить - куски йадра утекают всеть - запретить. Правда и сам не мог объяснить толком что именно и ссылался на забавные имена файлов в корневой системе. Завели баг, все пучком.
    - разработчи селунукса : надо чтоб пакеты помечались пусть сделают
    - самбисты : это к ядерщикам, они их генерят
    - ядерщики : это не к нам, мы такой фигней не маемся - пишите правила
    - писатели правил : это что? нам писать правило можно все из ядра в сеть? а зачем тогда все? Самбисты - метьте пакет.
    - самбисты : да сказано же, мопед ядерщиков
    - ядерщики : мопед не наш, мы только объяву разместили, пишите правила...

    В общем, забавная была переписка.
    Поэтому и считается что правила проще создавать самому и в динамике отслеживать.
    Типа вот я запросил, попользовался и больше не надо. Чем один раз и на всегда.

     
  • 3.51, Ordu (ok), 04:11, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    > собственно selinux и реализует костыльный вариант.

    SELinux -- это не костыльный вариант. Это классический корпоративный оверинжиниринг.

     
     
  • 4.56, Crazy Alex (ok), 19:17, 30/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Который при этом так же классчиески работает в корпоративных системах, не привязан к заморочкам самого приложения и допускает отдельный аудит правил. А вот как сделать аудит того, что предлагают в топике, без аудита всего кода приложения - не представляю.
     
     
  • 5.58, Ordu (ok), 22:04, 30/07/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Да-да, я о том же Корпоративный оверинжиниринг, попытка решить 200 проблем одн... весь текст скрыт [показать]
     
  • 2.33, PereresusNeVlezaetBuggy (ok), 20:41, 29/07/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    1. SELinux появился куда позднее, скажем, systrace — который в OpenBSD уже давно успели выпилить.

    2. SELinux не позволяет изменить привилегии после инициализации приложения, то есть программа всегда работает с максимально допустимыми привилегиями.

    3. SELinux куда сложнее, в плохом смысле этого слова, и заточен прежде всего под соответствие требованиям законодательства (США), а не реальные потребности.

     
     
  • 3.39, PereresusNeVlezaetBuggy (ok), 21:21, 29/07/2018 [^] [ответить]    [к модератору]  
  • +/
    ... и тут я немного наврал:
    хотя systrace был добавлен в OpenBSD в 2002 году, а SELinux в ядро — в 2003-м, но именно презентован SELinux в виде, доступном для использования, был всё же раньше, в 2000-м.
     
  • 1.41, Ordu (ok), 22:24, 29/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    А ограничения наследуются дочерними процессами?
     
     
  • 2.43, антончик (?), 00:13, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Тоже задался таким вопросом. Можно было бы написать шелл-враппер для старта программы и явно указать куда ей можно ходить, чтоб в ~/.ssh даже не думала заглядывать.
     
     
  • 3.52, Аноним (52), 06:48, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Получается с unveil нужно еще системное приложение писать, для программ которые его пока не поддерживают. Типо файрволла, только с правилами путей?
     
     
  • 4.54, PereresusNeVlezaetBuggy (ok), 13:07, 30/07/2018 [^] [ответить]    [к модератору]  
  • +/
    Написать можно, но смысл теряется: немалая часть путей при типовом использовании pledge/unveil актуальна только на этапе инициализации, а при использовании внешнего приложения получается, что мы всегда позволяем максимум требуемого всегда.
     
  • 2.48, PereresusNeVlezaetBuggy (ok), 01:36, 30/07/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Для pledge это определяется вторым аргументом, он позволяет задать ограничения именно для запускаемых через exec бинарников. Для unveil семантика ещё до конца не устаканилась, что-то может поменяться, — изначально эта функциональность вообще планировалась как часть pledge, но постепенно стало понятно, что нужен другой принцип работы, поэтому и системный вызов отдельный.
     
  • 1.61, Урри (?), 13:14, 31/07/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    подпишусь ка я...
     
  • 1.64, Daemon (??), 23:25, 01/08/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Тео видимо на тяжелые наркотики с пива перешел ))))
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor