3. Modifica limiti
Il criterio di sandbox impedisce a Sandboxee di chiamare syscall specifiche e riduce quindi la superficie di attacco. Tuttavia, un malintenzionato potrebbe comunque causare effetti indesiderati eseguendo un processo all'infinito o esaurendo la RAM e altre risorse.
Per contrastare questa minaccia, Sandboxee viene eseguito con limiti di esecuzione rigidi per
impostazione predefinita. Se questi limiti predefiniti causano problemi per l'esecuzione legittima
del tuo programma, puoi modificarli utilizzando la classe sandbox2::Limits
chiamando
limits()
sull'oggetto executor.
Lo snippet di codice riportato di seguito mostra alcuni esempi di aggiustamenti dei limiti. Tutte le opzioni disponibili sono documentate nel file di intestazione 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));
Per un esempio di utilizzo della classe sandbox2::Limits
, consulta lo
strumento di esempio.