3. Ajusta los límites

La política de la zona de pruebas evita que Sandboxee llame a llamadas de sistema específicas y, por lo tanto, reduce la superficie de ataque. Sin embargo, un atacante aún podría causar efectos no deseados si ejecuta un proceso de forma indefinida o agota la RAM y otros recursos.

Para abordar esta amenaza, Sandboxee se ejecuta con límites de ejecución estrictos de forma predeterminada. Si estos límites predeterminados causan problemas para la ejecución legítima de tu programa, puedes ajustarlos con la clase sandbox2::Limits llamando a limits() en el objeto ejecutor.

En el siguiente fragmento de código, se muestran algunos ejemplos de ajustes de límite. Todas las opciones disponibles están documentadas en el archivo de encabezado 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));

Para ver un ejemplo del uso de la clase sandbox2::Limits, consulta la herramienta de ejemplo.