The OpenNET Project / Index page

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

10.11.2015 15:15  OpenBSD развивает Pledge, новый механизм изоляции приложений

Тео де Раадт (Theo de Raadt) представил на конференции Hackfest 2015 новый механизм изоляции системных вызовов Pledge, продолжающий развитие идей, реализованных в появившейся в OpenBSD 5.8 подсистеме tame. Pledge уже интегрирован в ветку OpenBSD-CURRENT и будет доступен в релизе OpenBSD 5.9. В настоящее время механизмы защиты Pledge задействованы в 70% утилит базовой системы, к релизу OpenBSD 5.9 планируется обеспечить полный охват всех утилит.

По своей сути Pledge напоминает множество других механизмов ограничения доступа к системным вызовам, таких как seccomp, capsicum и systrace, но в отличие от них разработан с оглядкой на максимальное упрощение применения. Из-за усложнений, связанных с необходимости построения правил, включающих отдельные вызовы, прошлые попытки повсеместного применения изоляции системных вызовов при помощи systrace оказались безрезультатны. Единицы программ были защищены, но основная масса так и осталась без изменений. Для решения данной проблемы решено было создать новый метод формирования политик безопасности, который мог бы был легко применён ко всем приложениям базовой системы, без необходимости вникать в детали. В итоге за шесть месяцев существования Pledge на его использование переведено более 400 утилит OpenBSD.

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

Анализ закономерностей обращения к системным вызовам в штатных утилитах OpenBSD показал, что имеется типичный сценарий использования системных вызовов: достаточно большое число системных вызовов используется на этапе инициализации, после чего обращение к ним существенно сокращается. Обычно для обеспечения защиты достаточно добавить вызов pledge() в участок кода после инициализации, но до начала основного цикла.

Классы системных вызовов включают stdio (ввод/вывод), rpath (только чтение файлов), wpath (запись файлов), cpath (создание файлов), tmppath (работа со временными файлами), inet (сетевые сокеты), unix (unix-сокеты), dns (резолвинг в DNS), getpw (доступ на чтение к базе пользователей), ioctl (вызов ioctl), proc (управление процессами), exec (запуск процессов), id (управление правами доступа) и т.п.

Например, для программы cat, которая только читает файлы, можно указать pledge("stdio rpath", NULL), для mkdir - pledge("stdio rpath cpatch wpatch fattr", NULL), а для patch - pledge("stdio rpath cpatch wpatch tmpath fattr", NULL). Подобные ограничения позволят работать с файлами, но не дадут создавать сокеты и запускать другие приложения. Насколько pledge более прост для внедрения можно судить по утилите file: при использовании systrace для лимитирования системных вызовов требовалось 300 строк кода, в то время как pledge позволяет обойтись двумя вызовами pledge.



  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: В день двадцатилетия проекта доступен релиз OpenBSD 5.8
  3. OpenNews: Проект OpenBSD анонсировал собственный гипервизор
  4. OpenNews: В OpenBSD будет удалена поддержка всех локалей, за исключением UTF-8
  5. OpenNews: В дерево исходных текстов OpenBSD принят код замены sudo
  6. OpenNews: Проект OpenBSD выпустил переносимую редакцию OpenNTPD
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: pledge, syscall, openbsd
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 17:36, 10/11/2015 [ответить] [смотреть все]     [к модератору]
  • +5 +/
    В итоге получается примерный аналог AppArmor, но с указанием профиля безопасност... весь текст скрыт [показать]
     
     
  • 2.8, Elhana, 18:52, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +10 +/
    Отличие в том, что AppArmor/SELinux ты как админ можешь отключить, когда он заебал (и большинство так и делают), а pledge() нет, кроме как выпилив из исходников.
     
     
  • 3.10, anonymous, 20:20, 10/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Зато с pledge меньше вероятность того, что внесенные ограничения будут мешать ... весь текст скрыт [показать]
     
     
  • 4.29, pavlinux, 05:00, 11/11/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Реквестую в каждый бинарник хардкодить Manifest.xml с набором пермишенов. :D
     
  • 4.48, Аноним, 16:56, 12/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Если разработчикам не лень написать правило для pledge, почему им должно быть ле... весь текст скрыт [показать]
     
  • 3.12, Аноним, 20:28, 10/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +4 +/
    специально для вас есть слайд http www openbsd org papers hackfest2015-pledge... весь текст скрыт [показать]
     
     
  • 4.42, Elhana, 17:19, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Я его видел и не подразумевал в предыдущем комментарии, что отключение защиты эт... весь текст скрыт [показать]
     
  • 3.14, Аноним, 20:46, 10/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    это применимо большей частью к selinux у... весь текст скрыт [показать]
     
  • 3.27, бедный буратино, 04:08, 11/11/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –3 +/
    Вы абсолютно не понимаете специфики OpenBSD
     
     
  • 4.47, cmp, 12:41, 12/11/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Прогрессирующий нарцисизм? спасибо не надо
     
     
  • 5.49, Аноним, 16:58, 12/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Не этот, а главный Security by bullshit ... весь текст скрыт [показать]
     
  • 3.33, Какаянахренразница, 06:05, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    или заменив функционал этого pledge за заглушку ... весь текст скрыт [показать]
     
  • 2.15, Аноним, 20:47, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –2 +/
    а вообще в самом-самом итоге получится примерный аналог minix... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, Fyfy, 18:27, 10/11/2015 [ответить] [смотреть все]     [к модератору]  
  • –19 +/
    Что только люди не делают лиж бы не писать на нормальных языках типа Scala Java... весь текст скрыт [показать]
     
     
  • 2.5, Аноним, 18:39, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +4 +/
    От дурака-программиста нормальные языки не защищают Кроме того, языки, в кото... весь текст скрыт [показать] [показать ветку]
     
  • 2.6, Аноним, 18:44, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +9 +/
    нормальные языки @ жава. Чот ржу
     
     
  • 3.17, YetAnotherOnanym, 22:11, 10/11/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Как понять фразу "нормальные языки на жава" или "нормальные языки при жава"?
     
     
  • 4.18, Аноним, 22:31, 10/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    http advice-dog ru dog D0 BD D0 BE D1 80 D0 BC D0 B0 D0 BB D1 8C D0 BD D1 8B ... весь текст скрыт [показать]
     
  • 2.16, Аноним, 21:00, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    Которые написаны на С/С++
     
  • 1.7, PascalRD, 18:45, 10/11/2015 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Отличный костыль!
     
  • 1.9, Anonymous_, 19:52, 10/11/2015 [ответить] [смотреть все]    [к модератору]  
  • +2 +/
    Елегантное решение
     
  • 1.13, Pilat, 20:28, 10/11/2015 [ответить] [смотреть все]    [к модератору]  
  • +/
    Не проще ли полностью виртуализировать операционные системы, а потерю производительности скомпенсировать отказом от пожиралок CPU типа питон, php и скриптовых языков.
     
     
  • 2.19, Аноним, 22:31, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    много производительности не бывает ... весь текст скрыт [показать] [показать ветку]
     
  • 2.20, rob pike, 22:49, 10/11/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +3 +/
    Виртуализация не является решением проблем безопасности.
     
     
  • 3.23, Аноним, 23:35, 10/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Виртуализация вообще не решает большинство проблем, а лишь плодит новые Но адми... весь текст скрыт [показать]
     
     
  • 4.25, angra, 02:04, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Точно, ни проблему бессмертия, ни мира во всем мире, ни даже трубы горят вирту... весь текст скрыт [показать]
     
     
  • 5.31, rob pike, 05:27, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Решать проблемы безопасности виртуализацией - все равно что решать RAIDом пробле... весь текст скрыт [показать]
     
     
  • 6.40, angra, 15:23, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ты вообще читал пост, на который отвечаешь Ну давай специально для тебя дам дру... весь текст скрыт [показать]
     
     
  • 7.43, rob pike, 17:58, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Решать административные проблемы техническими средствами - верный путь к успеху ... весь текст скрыт [показать]
     
     
  • 8.44, angra, 22:33, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Сидеть и сетовать на несовершенство мира конечно гораздо продуктивней Умную ве... весь текст скрыт [показать]
     
     
  • 9.45, rob pike, 23:04, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Этого никто не предлагал В частности, администратичные проблемы решаются админи... весь текст скрыт [показать]
     
  • 4.32, Классический анонимуз, 05:48, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    У нас в конторе под кило серваков, всё под vmware или hyperV Storage - общий ме... весь текст скрыт [показать]
     
     
  • 5.35, pkdr, 09:37, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Читайте мануалы к вмвари, там много всего есть про отказоустойчивость, ну или са... весь текст скрыт [показать]
     
     
  • 6.36, Классический анонимуз, 10:51, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Вообще-то вопрос был на высказывание Виртуализация вообще не решает большинств... весь текст скрыт [показать]
     
     
  • 7.37, 6ap, 12:04, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    В том и дело, что вы потратили кучу денег и даже не поняли куда Это делалось 10... весь текст скрыт [показать]
     
     
  • 8.41, angra, 15:28, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Я тебе сейчас очень страшную вещь скажу - зоны солярки, джейлы БСД и контейнеры ... весь текст скрыт [показать]
     
     
  • 9.46, 6ap, 10:10, 12/11/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Пожалуй, промолчу ...
     
  • 7.50, pkdr, 19:26, 12/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Смотрю на 650 OpenVZ контейнеров а есть ещё множество сервисов, которые крутят... весь текст скрыт [показать]
     
  • 6.39, rob pike, 14:06, 11/11/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Можно еще рекомендации Microsoft почитать, в частности Microsoft 8217 s Preferr... весь текст скрыт [показать]
     
  • 1.24, Аноним, 00:10, 11/11/2015 [ответить] [смотреть все]    [к модератору]  
  • +/
    Кто сказал, что безопасность - это просто?
     
  • 1.26, бедный буратино, 04:07, 11/11/2015 [ответить] [смотреть все]    [к модератору]  
  • +/
    Ну, это не новость, это уже старость.

    Оно ещё под именем tame сколько развивалось, потом переименовалось, и презентаций уже было несколько штук.

     
     
  • 2.38, Аноним, 14:01, 11/11/2015 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    Это как раз нормальная новость - первый анонс, ещё про tame , честно говоря, бы... весь текст скрыт [показать] [показать ветку]
     
  • 1.28, pavlinux, 04:57, 11/11/2015 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    > Подобные ограничения позволят работать с файлами, но не дадут создавать сокеты и запускать другие приложения.

    Вопрос из Отдела Логики РАН: Я живу на Арбате, купил себе КАМАЗ, с 8 до 23 передвижение на них в центре запрещено. Не долбойоп ли я?

     
     
  • 2.34, бедный буратино, 08:08, 11/11/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    живи в КАМАЗе
     
  • 1.51, Аноним, 17:54, 14/11/2015 [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    А низзя еще вместо того чтобы переписывать софт простую утилитку pledge, которая... весь текст скрыт [показать]
     
     
  • 2.52, Аноним, 00:02, 30/03/2016 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Низзя Потому что извне нельзя нормально узнать, какому процессу в какой момент ... весь текст скрыт [показать] [показать ветку]
     
  • 1.53, anony, 23:58, 14/04/2016 [ответить] [смотреть все]    [к модератору]  
  • +/
    поддержка pledge() в разных языках программирования https://gist.github.com/ligurio/f6114bd1df371047dd80ea9b8a55c104
     

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


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