Предвижда се пренасяне на механизма за изолиране на обещания към Linux

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

Беше първоначално разработен от проекта OpenBSD y ви позволява избирателно да забранявате че приложенията имат достъп до неизползваните системни повиквания (формира се един вид бял списък от системни повиквания за приложението и други повиквания са забранени). За разлика от механизмите за контрол на достъпа на syscall, налични в Linux, като seccomp, механизмът за обещание е проектиран от самото начало, за да бъде възможно най-удобен за потребителя.

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

Като алтернатива е предложен залог, който позволява да създава правила за изолация, без да навлиза в подробности и да манипулира подготвени класове за достъп.

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

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

Отделно се разработва pledge имплементацията за FreeBSD, която се отличава с възможността за изолиране на приложения, без да се правят промени в техния код, докато в OpenBSD pledge call е насочена към тясна интеграция с базовата среда и добавяне на анотации към кода на всеки един.

Залогът е като забранения плод, който всички жадуваме, когато шефът каже, че трябва да използваме неща като Linux. Защо това има значение? Това е така, защото pledge() всъщност прави сигурността разбираема. Linux никога не е имал ниво на сигурност, което простосмъртните да могат да разберат.

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

Помощната програма работи на всички Linux дистрибуции след RHEL6 и не изисква root достъп. Освен това, въз основа на космополитната библиотека, е предоставен API за управление на ограниченията в кода на програми на език C, което позволява, наред с други неща, да се създават анклави за селективно ограничаване на достъпа по отношение на определени функции на приложението.

Имаше няколко разработчици в миналото, които са опитвали това. Няма да назовавам имена, защото повечето от тези проекти така и не бяха завършени. Що се отнася до SECOMP, онлайн уроците обясняват само как да поставят в белия списък системни повиквания, така че повечето хора губят интерес, преди да разберат как да филтрират аргументи. Проектите, които се придвижиха напред, също имаха пропуски, като например позволяването на setuid/setgid/sticky bits да бъдат променяни. Следователно не трябва да се използва нито една от настоящите алтернативи. Мисля, че това усилие ни доближава много повече до наличието на pledge() от всякога.

Внедряването не изисква промени в ядрото: ограниченията на помощната програма се превеждат в SECCOMP BPF правила и се обработват с помощта на собствения механизъм за изолиране на системни повиквания на Linux. Например извикването на promise("stdio rpath", 0) ще преобразува в BPF филтър

И накрая, ако имате интерес да научите повече за него, можете да се консултирате с подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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