Песочница файловой системы для Linux: FSSB

Песочница файловой системы для Linux: FSSB

FSSB — песочница файловой системы для Linux

Скачать FSSB

FSSB — это песочница для вашей файловой системы. С её помощью вы можете запускать любую программу и быть уверенным, что ни один из ваших файлов не будет каким-либо образом изменен. Тем не менее, программа не будет об этом знать, и поэтому каждое изменение, которое она пытается сделать, будет безопасным в песочнице, все еще позволяя читать существующие файлы. Это включает в себя создание, изменение, переименование и удаление файлов.

Приложения бесчисленны:

  • Позволяют запускать произвольные двоичные файлы, которым вы не доверяете (возможно, вы загрузили его из Интернета).
  • FSSB обеспечивает безопасную, повторяемую среду для программ. Это может быть полезно для отладки программ.
  • Выполните несколько пробных запусков, чтобы увидеть, как программа ведет себя, сохраняя ваши файлы в целости. Вы можете точно увидеть, какие изменения внесла программа.

Пожалуйста, помните, что FSSB все еще находятся на стадии альфа-разработки.

Установка FSSB

FSSB является очень легким приложением, и, соответственно, не требует слишком много зависимостей. На большинстве систем, вам понадобится всего лишь установить openssl в С библиотеку. А затем, вы сможете запустить:

$ make

Для генерации бинарного fssb.

Использование

FSSB была разработана, для того, чтобы можно было пользоваться ей с максимальной легкостью. Просто выполните:

$ ./fssb -- <program> <args>

Для запуска программы в безопасной, зависимой среде-песочнице.

Как все это работает?

На Linux, каждая операция, каждой программы (ну, не прямо каждая, но большая часть) на самом деле выполняется с помощью, так называемого, системного вызова — или syscall для краткости. Команда open в Python на самом деле является командой fopen, написанная на C, что в свою очередь является syscall под названием open (это заворачивается с помощью glibc).

FSSB перехватывает эти системные вызовы до их фактического выполнения. Например, прямо перед тем, как open syscall будет выполнен, программа остановится. Теперь у каждого из этих системных вызовов есть аргументы. Например, fopen(«new_file», «w») на C может выглядеть следующим образом:

open("new_file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3

Первый аргумент — имя файла, второй — отметки, третий — режим. Чтобы узнать больше об этом, запустите man -s 2 open .

Каждый syscall может иметь не более 6 аргументов — они отображают шесть регистров процессора, каждая из которых имеет значение. В приведенном выше примере, как раз перед тем, как выполнить open syscall, первый регистр содержит адрес памяти, указывающий на строку «new_file».

Во всяком случае, перед тем, как выполняется syscall, FSSB переключает строку на что-то другое — на имя файла в песочнице. И затем даёт syscall продолжить. Если говорить о процессоре, то вы попросили создать файл в песочнице. Так оно и есть на самом деле.

Затем сразу после завершения работы syscall (после создания файла) FSSB переключает значение в исходное значение. Теперь syscalls являются довольно низкоуровневыми. И мы работаем по обе стороны от syscall — незадолго до и после его выполнения. Таким образом, программа не знает, что файл был создан в песочнице. Каждая последующая операция выполняется в файле песочницы.

Перевод: Анна Давыдова
Источник: n0where.net

Это интересно:

Оставить ответ

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