3. Ajuster les limites
La règle du bac à sable empêche le bac à sable d'appeler des appels système spécifiques et réduit ainsi la surface d'attaque. Toutefois, un pirate informatique peut toujours être en mesure de provoquer des effets indésirables en exécutant un processus indéfiniment ou en épuisant la RAM et d'autres ressources.
Pour faire face à cette menace, Sandboxee s'exécute par défaut avec des limites d'exécution strictes. Si ces limites par défaut posent problème pour l'exécution légitime de votre programme, vous pouvez les ajuster à l'aide de la classe sandbox2::Limits
en appelant limits()
sur l'objet d'exécution.
L'extrait de code ci-dessous montre quelques exemples d'ajustements de limites. Toutes les options disponibles sont documentées dans le fichier d'en-tête 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));
Pour obtenir un exemple d'utilisation de la classe sandbox2::Limits
, consultez l'exemple d'outil.