Механізм ізоляції застави планується перенести на Linux

Останнім часом автор стандартної бібліотеки Cosmopolitan C і платформа Redbean, оголошена через a оголосив про впровадження механізму ізоляції pledge() для Linux.

Це було початково розроблений проектом OpenBSD y дозволяє вибірково забороняти що програми отримують доступ до невикористаних системних викликів (для програми формується такий собі білий список системних викликів, інші виклики заборонені). На відміну від механізмів керування доступом системного виклику, доступних у Linux, таких як seccomp, механізм застави розроблено з самого початку, щоб бути максимально зручним для користувача.

Невдала ініціатива ізоляції додатків у базовому середовищі OpenBSD за допомогою механізму systrace продемонструвала, що ізоляція на рівні окремих системних викликів є надто складною та займає багато часу.

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

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

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

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

Запорука — це як заборонений плід, якого ми всі прагнемо, коли бос каже, що ми повинні використовувати такі речі, як Linux. Чому це має значення? Це тому, що pledge() насправді робить безпеку зрозумілою. У Linux ніколи не було рівня безпеки, зрозумілого простим смертним.

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

Утиліта працює на всіх дистрибутивах Linux, починаючи з RHEL6 і не потребує кореневого доступу. Крім того, на основі космополітичної бібліотеки надається API для керування обмеженнями в коді програм мовою C, що дозволяє, серед іншого, створювати анклави для вибіркового обмеження доступу щодо певних функцій програми.

У минулому було кілька розробників, які пробували це. Я не буду називати імен, тому що більшість із цих проектів так і не були завершені. Що стосується SECOMP, онлайн-підручники лише пояснюють, як додати системні виклики до білого списку, тому більшість людей втрачають інтерес до того, як з’ясують, як фільтрувати аргументи. Проекти, які рухалися вперед, також мали недоліки, як-от дозвіл на зміну бітів setuid/setgid/sticky. Тому не слід використовувати жодну з існуючих альтернатив. Я думаю, що ці зусилля наблизили нас до pledge(), ніж будь-коли раніше.

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

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


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.