Chimera؛ سندباکس یوزراسپیس برای کدی که بهش اعتماد نداری
خلاصهٔ کاملتر
تو مخزن Chimera اومده که این پروژه یه سندباکس یوزراسپیس برای کدیه که کاملاً بهش اعتماد نداری؛ و نویسنده مستقیم به یه مورد استفادهٔ امروزی اشاره میکنه: ایجنتهای کدنویس که دستورهای دلخواه و تولیدشده رو روی همون ماشینی اجرا میکنن که خودت هم داری روش کار میکنی.
ایدهش یه تعادله. Chimera محدود میکنه که یه پروسه چه کارهایی با میزبان میتونه بکنه، ولی همچنان بهش اجازه میده به فایلها و ابزارهای میزبان دسترسی داشته باشه؛ یعنی کد همچنان مفید میمونه بدون اینکه دستش برای خراب کردن سیستم باز باشه. چون خودش یه برنامهٔ عادیه، نه ماشین مجازی میخواد، نه کانتینر، نه قابلیت خاص کرنل یا دسترسی ویژه — هر جا کدت الان اجرا میشه، اینم اجرا میشه.
روش کارش ترجمهٔ پویای دودویی روی همون ISA ـه: باینری بدون هیچ تغییری اجرا میشه، ولی هر سیستمکال مهمان وسط راه گرفته میشه و سندباکس تصمیم میگیره چه اتفاقی براش بیفته. سه انتخاب روی میزه: بفرستش به کرنل میزبان، فقط لاگش کن، یا مجازیسازیش کن و یه جواب ساختگی بده.
پروژه دو شکل عرضه میشه. یکی ابزار خط فرمان chimera که یه پروسه رو مستقیم تو شل میپیچه، و یکی کتابخونهٔ Rust که همون رانتایم رو داخل برنامهٔ خودت جاسازی میکنه. تو حالت پیشفرض، Chimera همهٔ سیستمکالها رو به کرنل میزبان فوروارد میکنه، پس پروسهٔ پیچیدهشده دقیقاً مثل حالت بومی رفتار میکنه و بعد خودت سیاست رو سفتتر میکنی.
قلب کتابخونه تریت SystemCalls ـه؛ پیادهسازیش میکنی و تعیین میکنی هر سیستمکال چطور مدیریت بشه. نمونهٔ سادهای که تو مستندات اومده فقط شمارهٔ هر سیستمکال رو چاپ میکنه و بعد اجراش رو به میزبان میسپره:
impl SystemCalls for Tracer {
fn handle(&mut self, call: &mut SystemCall) {
eprintln!("syscall {}", call.number);
call.set_result(host_syscall(call));
}
}همین یه تریت کافیه که چیزهای متفاوتی ازش دربیاد. تو پوشهٔ نمونههای مخزن دوتا مثال کامل هست: یکی سندباکسی که بر پایهٔ allowlist سیستمکالها رو محدود میکنه و یکی بازپیادهسازی strace(1) روی همون تریت — یعنی ابزار دیباگ و ابزار محدودسازی از یه مکانیزم مشترک درمیان.
وضعیت فعلی پشتیبانی هم صریح گفته شده: لینوکس روی x86 پشتیبانی میشه و پورت Darwin روی arm64 هنوز در حال کاره. پروژه با Rust نوشته شده، زیر لایسنس MIT منتشر شده و یه گزارش فنی با عنوان «بهسوی سندباکس کردن ایجنتهای غیرقابلاعتماد در یوزراسپیس» از پکا انبرگ و اشوین رائو هم پشتشه.
نکات کلیدی:
- سندباکس یوزراسپیس برای کد غیرقابلاعتماد، بدون نیاز به VM، کانتینر یا دسترسی ویژه
- ترجمهٔ پویای دودویی روی همون ISA و رهگیری تکتک سیستمکالهای مهمان
- هر سیستمکال میتونه فوروارد، لاگ یا مجازیسازی بشه
- دو شکل عرضه: ابزار خط فرمان chimera و کتابخونهٔ Rust با تریت SystemCalls
- نمونههای آماده: سندباکس مبتنی بر allowlist و بازپیادهسازی strace
- فعلاً لینوکس/x86؛ پورت Darwin/arm64 در حال توسعه — لایسنس MIT




