3. Ajustar límites

La política de zona de pruebas impide que el Sandboxee llame a syscalls específicas y, por lo tanto, reduce la superficie de ataque. Sin embargo, un atacante podría causar efectos no deseados ejecutando un proceso de forma indefinida o agotando la RAM y otros recursos.

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

En el siguiente fragmento de código, se muestran algunos ejemplos de ajustes de límites. Todas las opciones disponibles se documentan 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.