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
Это интересно: