3. Limits anpassen

Die Sandbox-Richtlinie verhindert, dass der Sandboxee bestimmte Systemaufrufe aufruft, und verringert so die Angriffsfläche. Ein Angreifer kann jedoch möglicherweise unerwünschte Auswirkungen verursachen, indem er einen Prozess unbegrenzt ausführt oder RAM und andere Ressourcen erschöpft.

Um dieser Bedrohung entgegenzuwirken, wird die Sandboxee standardmäßig unter strengen Ausführungslimits ausgeführt. Wenn diese Standardlimits Probleme bei der legitimen Ausführung Ihres Programms verursachen, können Sie sie mit der Klasse sandbox2::Limits anpassen, indem Sie limits() für das Executor-Objekt aufrufen.

Das folgende Code-Snippet zeigt einige Beispiele für Anpassungen von Limits. 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.