3. Sınırları ayarlama

Sandbox politikası, Sandboxee'nin belirli syscall'leri çağırmasını engeller ve böylece saldırı yüzeyini azaltır. Ancak saldırganlar, bir işlemi süresiz olarak çalıştırarak veya RAM'i ve diğer kaynakları tüketerek istenmeyen etkilere neden olabilir.

Bu tehdidi önlemek için Sandboxee varsayılan olarak sıkı yürütme sınırları altında çalışır. Bu varsayılan sınırlar programınızın meşru şekilde yürütülmesinde sorunlara neden olursa yürütücü nesnesinde limits() işlevini çağırarak sandbox2::Limits sınıfını kullanarak bunları ayarlayabilirsiniz.

Aşağıdaki kod snippet'inde bazı örnek sınır ayarlamaları gösterilmektedir. Kullanılabilir tüm seçenekler limits.h başlık dosyasında belgelenmiştir.

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

sandbox2::Limits sınıfının kullanımına ilişkin bir örnek için aracın örneğine bakın.