3. Отрегулируйте лимиты
Политика «песочницы» запрещает процессу-песочнице вызывать определённые системные вызовы, тем самым уменьшая поверхность атаки. Однако злоумышленник всё равно может вызвать нежелательные последствия, запустив процесс бесконечно или исчерпав оперативную память и другие ресурсы.
Чтобы предотвратить эту угрозу, Sandboxee по умолчанию работает с жёсткими ограничениями на выполнение. Если эти ограничения по умолчанию создают проблемы для корректного выполнения вашей программы, вы можете изменить их с помощью класса sandbox2::Limits
, вызвав метод limits()
объекта-исполнителя.
В приведённом ниже фрагменте кода показаны примеры настройки лимитов. Все доступные варианты описаны в заголовочном файле limits.h .
// Restrict the address space size of the sandboxee to 4 GiB.
executor->limits()->set_rlimit_as(4ULL << 30);
// Kill sandboxee with SIGXFSZ if it writes more than 1 GiB to the filesystem.
executor->limits()->set_rlimit_fsize(1ULL << 30);
// Number of file descriptors which can be used by the sandboxee.
executor->limits()->set_rlimit_nofile(1ULL << 10);
// The sandboxee is not allowed to create core files.
executor->limits()->set_rlimit_core(0);
// Maximum 300s of real CPU time.
executor->limits()->set_rlimit_cpu(300);
// Maximum 120s of wall time.
executor->limits()->set_walltime_limit(absl::Seconds(120));
Пример использования класса sandbox2::Limits
см. в примере инструмента .