Sandboxing کدهای غیرقابل اعتماد زمانی مفید است که باید به نرم افزارهای توسعه یافته شخص ثالث که در آن به کد منبع دسترسی ندارید یا منابعی برای انجام ارزیابی کد منبع ندارید، تکیه کنید. Sandboxing همچنین می تواند به عنوان یک مرز امنیتی اضافی برای کد شما مفید باشد.
بسته به مورد استفاده شما، ابزارهای مختلفی برای کنترل کد موجود است. جدول زیر نمای کلی از محصولات مختلف و موارد استفاده کاربردی آنها را نشان می دهد. برخی از این محصولات در گوگل استفاده می شوند و توسط مهندسان گوگل توسعه یافته اند.
Sandbox2 و Sandboxed API دو محصولی هستند که توسط بخش sandboxing تیم امنیتی Google توسعه یافتهاند.
تولید - محصول | شرح | استفاده از مورد |
---|---|---|
Sandbox2 | سندباکس لینوکس با استفاده از فضاهای نام، محدودیت های منابع و فیلترهای syscall seccomp-bpf. فناوری sandboxing اساسی را برای Sandboxed API فراهم می کند. | سندباکس عمومی |
gVisor | فراخوانی های سیستم را در هسته برنامه پیاده سازی می کند. تماس های سیستمی را با استفاده از ptrace یا مجازی سازی سخت افزار رهگیری می کند. | سندباکس عمومی |
حباب بند | ابزار Sandboxing با زیر مجموعه ای از فضاهای نام کاربری پیاده سازی شده است. به عنوان یک موتور اجرایی برای مثال Flatpak استفاده می شود. | ابزارهای CLI |
Minijail | ابزار Sandboxing و Containment مورد استفاده در ChromeOS و Android. یک فایل اجرایی و یک کتابخانه را ارائه می دهد که می تواند برای راه اندازی و جعبه سندباکس دیگر برنامه ها و کدها استفاده شود. | ابزارهای CLI |
NSJail | جداسازی فرآیند برای لینوکس با استفاده از فضاهای نام، محدودیت های منابع و فیلترهای syscall seccomp-bpf. می تواند به صورت اختیاری از Kafel ، یک زبان خاص دامنه سفارشی، برای تعیین خط مشی های syscall استفاده کند. | ابزارهای CLI |
Sandboxed API | جعبه های sandbox قابل استفاده مجدد برای کتابخانه های C/C++ با استفاده از Sandbox2. | کد C/C++ |
مشتری بومی | منسوخ تکنیک قدرتمند برای باینریهای جعبه شنی C/C++ با کامپایل کردن در زیر مجموعه محدود x86 (NaCl)/LLVM بایت کد (PNaCl). طراحی جانشین آن (WebAssembly) تحت تأثیر قرار گرفت و تا حد زیادی با آن جایگزین شد. | کد C/C++ |
WebAssembly (WASM) | یک فرمت باینری برای باینری های قابل حمل. ماژول های WASM در محیط های زمان اجرا ایزوله اجرا می شوند. | کد C/C++ |
RLBox | یک Sandboxing API (نوشته شده در C++17)، که میتواند از پشتوانههای اجرایی مختلفی استفاده کند: Native Client، WebAssembly، یا فرآیندهای راه دور. | کد C/C++ |
Flatpak | ساخته شده در بالای Bubblewrap، سندباکس را برای برنامه های دسکتاپ لینوکس فراهم می کند. بر بسته بندی و توزیع برنامه های بومی تأکید دارد. | برنامه های دسکتاپ |
Sandbox2
Sandbox2 یک سندباکس امنیتی C++ منبع باز برای لینوکس است. با Sandbox2 میتوانید محیط زمان اجرا را به حداقل مورد نیاز برای عملیات واقعی محدود کنید، بنابراین تأثیر آسیبپذیریهای بالقوه اجرای کد را محدود کنید.
Sandbox2 را می توان برای سندباکس کل برنامه ها یا بخش هایی از برنامه های نوشته شده در C/C++ استفاده کرد.
Sandboxed API
Sandboxed API (SAPI) یک پروژه منبع باز برای کتابخانه های sandbox C/C++ است. کتابخانههای Sandboxed API را میتوان به راحتی دوباره مورد استفاده قرار داد، که بار پروژههای آینده را از بین میبرد. قبل از Sandboxed API، جعبههای sandbox موجود برای استفاده در Google به کار پیادهسازی بیشتری با هر نمونه جدید از پروژهای که قرار بود جعبهشنی شونده میشد، نیاز داشت، حتی اگر از همان کتابخانه نرمافزاری استفاده مجدد میکرد. خطمشیهای Sandbox2 و سایر محدودیتهای اعمال شده برای فرآیند sandboxed باید هر بار مجدداً اجرا میشد و مکانیسمهای تبادل داده بین بخشهای قابل اعتماد و غیرقابل اعتماد کد باید از ابتدا طراحی میشد.