3. সীমা সামঞ্জস্য করুন

স্যান্ডবক্স নীতি স্যান্ডবক্সীকে নির্দিষ্ট সিস্ক্যাল কল করতে বাধা দেয় এবং এইভাবে আক্রমণের পৃষ্ঠকে হ্রাস করে। যাইহোক, একজন আক্রমণকারী অনির্দিষ্টকালের জন্য একটি প্রক্রিয়া চালিয়ে বা RAM এবং অন্যান্য সংস্থানগুলিকে ক্লান্ত করে অবাঞ্ছিত প্রভাব সৃষ্টি করতে সক্ষম হতে পারে।

এই হুমকি মোকাবেলা করার জন্য, স্যান্ডবক্সী ডিফল্টরূপে কঠোর কার্যকরী সীমার অধীনে চলে। যদি এই ডিফল্ট সীমাগুলি আপনার প্রোগ্রামের বৈধ নির্বাহের জন্য সমস্যার সৃষ্টি করে, আপনি 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 শ্রেণী ব্যবহারের উদাহরণের জন্য, উদাহরণ টুলটি দেখুন।

,

3. সীমা সামঞ্জস্য করুন

স্যান্ডবক্স নীতি স্যান্ডবক্সীকে নির্দিষ্ট সিস্ক্যাল কল করতে বাধা দেয় এবং এইভাবে আক্রমণের পৃষ্ঠকে হ্রাস করে। যাইহোক, একজন আক্রমণকারী অনির্দিষ্টকালের জন্য একটি প্রক্রিয়া চালিয়ে বা RAM এবং অন্যান্য সংস্থানগুলিকে ক্লান্ত করে অবাঞ্ছিত প্রভাব সৃষ্টি করতে সক্ষম হতে পারে।

এই হুমকি মোকাবেলা করার জন্য, স্যান্ডবক্সী ডিফল্টরূপে কঠোর কার্যকরী সীমার অধীনে চলে। যদি এই ডিফল্ট সীমাগুলি আপনার প্রোগ্রামের বৈধ নির্বাহের জন্য সমস্যার সৃষ্টি করে, আপনি 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 শ্রেণী ব্যবহারের উদাহরণের জন্য, উদাহরণ টুলটি দেখুন।