3. सीमाओं में बदलाव करना
सैंडबॉक्स नीति, सैंडबॉक्सी को कुछ खास सिसकॉल करने से रोकती है. इससे अटैक सरफ़ेस कम हो जाता है. हालांकि, हमलावर अब भी किसी प्रोसेस को अनिश्चित काल तक चलाकर या रैम और अन्य संसाधनों का इस्तेमाल करके, अनचाहे असर डाल सकता है.
इस खतरे से निपटने के लिए, सैंडबॉक्सी को डिफ़ॉल्ट रूप से, एक्ज़ीक्यूशन की तय सीमाओं के तहत चलाया जाता है. अगर इन डिफ़ॉल्ट सीमाओं की वजह से, आपके प्रोग्राम को सही तरीके से लागू करने में समस्या आ रही है, तो sandbox2::Limits
क्लास का इस्तेमाल करके इनमें बदलाव किया जा सकता है. इसके लिए, एक्ज़ीक्यूटर ऑब्जेक्ट पर limits()
को कॉल करें.
नीचे दिए गए कोड स्निपेट में, सीमा में किए गए कुछ बदलावों के उदाहरण दिए गए हैं. उपलब्ध सभी विकल्पों के बारे में, 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));
sandbox2::Limits
क्लास के इस्तेमाल का उदाहरण देखने के लिए, टूल का उदाहरण देखें.