3. Grenzwerte anpassen

Die Sandbox-Richtlinie verhindert, dass der Sandboxee bestimmte Systemaufrufe aufruft, und verringert so die Angriffsfläche. Angreifer können jedoch trotzdem unerwünschte Auswirkungen haben, wenn sie einen Prozess auf unbestimmte Zeit ausführen oder den RAM und andere Ressourcen erschöpfen.

Um dieser Bedrohung entgegenzuwirken, hat das Sandboxee standardmäßig enge Ausführungslimits. Wenn diese Standardlimits Probleme bei der ordnungsgemäßen Ausführung Ihres Programms verursachen, können Sie sie mithilfe der Klasse sandbox2::Limits anpassen, indem Sie limits() für das Executor-Objekt aufrufen.

Das folgende Code-Snippet zeigt einige Beispiele für Limitanpassungen. Alle verfügbaren Optionen sind in der Headerdatei limits.h dokumentiert.

// 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));

Ein Beispiel für die Verwendung der Klasse sandbox2::Limits finden Sie im Beispieltool.