Планируется портировать механизм изоляции залога на Linux

Недавно автор стандартной библиотеки Cosmopolitan C и платформа Redbean, анонсированная через объявлено о реализации механизма изоляции залога() для Linux.

Это был изначально разработан в рамках проекта OpenBSD y позволяет выборочно запрещать что приложения получают доступ к неиспользуемым системным вызовам (для приложения формируется своего рода белый список системных вызовов и другие вызовы запрещены). В отличие от механизмов управления доступом к системным вызовам, доступных в Linux, таких как seccomp, механизм залога разработан с нуля, чтобы быть максимально удобным для пользователя.

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

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

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

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

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

Обещание похоже на запретный плод, которого мы все жаждем, когда босс говорит, что мы должны использовать такие вещи, как Linux. Почему это имеет значение? Это потому, что залог () на самом деле делает безопасность понятной. В Linux никогда не было уровня безопасности, понятного простым смертным.

Разработчики портов для Linux взяли пример с FreeBSD а вместо внесения изменений в код подготовили дополнительную утилиту от залога.com, позволяющую применять ограничения без изменения кода приложения. Например, чтобы запустить утилиту curl с доступом только к классам системных вызовов stdio, rpath, inet и threadstdio, просто запустите "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Утилита работает на всех дистрибутивах Linux, начиная с RHEL6. и не требует root-доступа. Дополнительно на основе библиотеки космополитен предоставляется API для управления ограничениями в коде программ на языке Си, что позволяет в том числе создавать анклавы для выборочного ограничения доступа в отношении тех или иных функций приложения.

В прошлом было несколько разработчиков, которые пытались это сделать. Я не буду называть имен, потому что большинство этих проектов так и не были завершены. Когда дело доходит до SECOMP, онлайн-учебники объясняют только, как внести системные вызовы в белый список, поэтому большинство людей теряют интерес, прежде чем выяснят, как фильтровать аргументы. В проектах, которые продвигались вперед, также были упущения, такие как возможность изменения битов setuid/setgid/sticky. Поэтому не следует использовать ни одну из существующих альтернатив. Я думаю, что это усилие приближает нас к залогу(), чем когда-либо прежде.

Реализация не требует изменений ядра: ограничения утилит транслируются в правила SECCOMP BPF и обрабатываются с использованием встроенного в Linux механизма изоляции системных вызовов. Например, вызов promise("stdio rpath", 0) преобразуется в фильтр BPF.

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


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.