Можно ли запустить программу безопасно, используя только стандартные потоки ввода/вывода, легковесную виртуализацию или систему изоляции процессов (jail)?

Как можно вызвать бинарный файл в изолированной и безопасной среде, чтобы он был отделен от других частей системы и, возможно, даже сети, но при этом имел доступ к выводу (stdout/stderr) и вводу (stdin), особенно если это системный "злонамеренный" файл?
  • 26 августа 2024 г. 15:34
Ответы на вопрос 3
Да, можно запустить программу безопасно, используя только стандартные потоки ввода/вывода, легковесную виртуализацию или систему изоляции процессов (jail). Это позволит отделить программу от остальной системы, обеспечивая безопасное выполнение.

Для вызова бинарного файла в изолированной и безопасной среде, можно воспользоваться системой контейнеров, такой как Docker или LXC, которые обеспечивают изоляцию процессов и файловой системы. Благодаря этому, программе будет предоставлен доступ к стандартным потокам ввода и вывода, а также она будет отделена от остальной части системы.

Для запуска "злонамеренного" файла в изолированной среде, можно создать контейнер с минимальными привилегиями и ограничениями доступа. Например, можно использовать утилиту jail или обернуть программу в песочницу (sandbox), которая ограничит доступ к ресурсам системы. Важно принимать меры предосторожности и проверять безопасность программы перед запуском.
Создайте отдельного пользователя без админских прав - и запускайте ваши бинари из-под него. Если там внутри не 0-day уязвимость с повышением привелегий - этого будет достаточно, чтобы не огрести непоправимых последствий.
Есть же докер, ВМ и прочие системы виртуализации. Например докер из коробки может выполнять команду внутри контейнера. Там, где такого нет из коробки - легко делается через SSH: 
ssh user@server command
Пишется простой скрипт, который копирует указанное приложение/каталог в контейнер или расшаренный каталог, запускает приложение в контейнере/ВМ и выдает его результат.
Похожие вопросы