هر روز با دانلود فایلها، نصب نرمافزارها و مرور وبسایتها، خود را در معرض خطرات امنیتی قرار میدهیم. تصور کنید یک فایل ناشناس را دانلود کردهاید، آیا آن را مستقیماً اجرا میکنید؟ احتمالاً نه!
اصطلاح sandbox از ایده جعبه شنی کودکان میآید، که در آن ماسه و اسباببازیها در یک محوطه کوچک قرار میگیرند تا کودکان بتوانند با خیال راحت بازی کنند. sandboxing دقیقاً مانند یک “جعبه شنی” برای کامپیوترها عمل میکند و یک محیط آزمایشی امن و مجزا برای اجرا و آزمایش کدهای کامپیوتری ایجاد میکند تا کاربران بتوانند بدون به خطر انداختن سیستم اصلی خود، نرمافزارها و فایلهای مشکوک را در یک محیط امن و جداگانه بررسی کنند.
توسعه دهندگان نرم افزار از سندباکسها برای آزمایش کدهای برنامهنویسی جدید استفاده میکنند. متخصصان امنیت سایبری از سندباکس برای آزمایش نرمافزارهای مخرب بالقوه استفاده میکنند. بدون sandbox، نرم افزار یا برنامههای کاربردی میتوانند به طور بالقوه دسترسی نامحدودی به تمام دادههای کاربر و منابع سیستم در یک شبکه داشته باشند.
Sandboxها همچنین برای اجرای ایمن کدهای مخرب به منظور جلوگیری از آسیب رساندن به دستگاه میزبان، شبکه یا سایر دستگاههای متصل استفاده میشوند. استفاده از سندباکس برای شناسایی بدافزارها، یک لایه حفاظتی اضافی در برابر تهدیدات امنیتی مانند حملات مخفیانه و سوءاستفادههایی که از آسیبپذیریهای zero-day استفاده میکنند، ارائه میکند.
اهمیت Sandboxها
با پیچیدهتر شدن بدافزارها، نظارت بر رفتارهای مشکوک برای شناسایی بدافزارها بسیار دشوار شده است. بسیاری از تهدیدات در سالهای اخیر از تکنیکهای مبهمسازی پیشرفته استفاده کردهاند که میتواند از شناسایی محصولات امنیتی شبکه و نقطه پایانی جلوگیری کند.
Sandboxing از زیرساختهای حیاتی سازمان در برابر کدهای مشکوک محافظت میکند زیرا در یک سیستم جداگانه اجرا میشود. همچنین به IT اجازه میدهد تا کدهای مخرب را در یک محیط ایزوله آزمایش کند تا نحوه عملکرد آن را درک کند و همچنین حملات بدافزار مشابه را با سرعت بیشتری شناسایی کند.
موارد استفاده از سندباکسها
به طور کلی، Sandbox برای آزمایش برنامههای مشکوکی که ممکن است حاوی ویروسها یا بدافزارهای دیگر باشند، (بدون آسیب رساندن به دستگاههای میزبان) استفاده میشود. استفاده از سندباکس میتواند شامل موارد زیر باشد:
- توسعه نرمافزار: تست کد، توسعه API
- امنیت سایبری: تحلیل بدافزار، جلوگیری از حملات zero-day
- مرور وب: اجرای پلاگینها، حفاظت از مرورگر
- سیستم عامل: مجازیسازی، جداسازی برنامهها
Sandboxing یکی از ویژگیهای مهم زبان برنامهنویسی جاوا و محیط توسعه است. سندباکس یک ناحیه برنامه و مجموعه قوانینی است که برنامهنویسان باید هنگام ایجاد کد جاوا (به نام اپلت) که به عنوان بخشی از یک صفحه وب ارسال میشود، استفاده کنند.
همچنین سندباکس قادر است یک محیط تولید آینهای را فعال کند که توسعهدهنده خارجی میتواند از آن برای توسعه برنامهای که یک سرویس وب از sandbox استفاده میکند، استفاده کند. این به توسعه دهندگان شخص ثالث امکان میدهد تا کد خود را قبل از انتقال به محیط تولید، بررسی و تأیید کنند.
API sandbox هدف توسعه دهندگان و آزمایش کنندگان API است که ویژگیهای محیط تولید را شبیهسازی میکند تا پاسخهای شبیهسازی شدهای برای APIها ایجاد کند تا رفتار یک سیستم واقعی را نمایش دهد.
سندباکس جاوا
اپلتهای جاوا بهعنوان بخشی از انتقال صفحه وب بهطور خودکار به مرورگر کاربر ارسال میشوند و به محض رسیدن به آن قابل اجرا هستند. بدون هیچگونه حفاظت دیگری، کد مخرب میتواند بدون محدودیت اجرا شود و به راحتی آسیب برساند.
استفاده از sandbox برای جداسازی کد، میتواند به محافظت در برابر حملات مخرب و آسیبهای ناشی از برنامههای باگ جاوا با دسترسی نامحدود به حافظه یا خدمات سیستم عامل (OS) کمک کند. محدودیتهای سندباکس به شدت روی منابعی که یک اپلت میتواند درخواست یا دسترسی داشته باشد محدودیت اعمال میکند.
sandbox جاوا شامل ناحیه برنامه و مجموعهای از قوانین است که برنامهنویسان باید هنگام ایجاد کد جاوا ارسال شده با محتوای وب از آنها استفاده کنند. محدودیتهای sandbox، محدودیتهای سختی را در مورد منابع سیستمی که اپلت میتواند درخواست کند یا به آن دسترسی داشته باشد، تعیین میکند.
اساساً، برنامهنویس باید کدی بنویسد که فقط در سندباکس play شود. sandbox را میتوان به عنوان یک منطقه کوچک در رایانه تصور کرد که در آن کد یک اپلت میتواند آزادانه play شود، اما در جای دیگر مجاز نیست.
سندباکس نه تنها با الزام برنامهنویسان به انطباق با قوانین خاص، بلکه با ارائه بررسی کنندههای کد پیادهسازی میشود. خود زبان جاوا ویژگیهایی مانند مدیریت خودکار حافظه، جمعآوری زباله و بررسی محدوده آدرس در رشتهها و آرایهها را فراهم میکند که ذاتا به تضمین کد امن کمک میکند.
کد کامپایل شده جاوا که به bytecode معروف است، شامل یک تایید کننده است که پایبندی به محدودیتهای خاصی را تضمین میکند. جاوا همچنین یک فضای نام محلی دارد که در آن کد میتواند محدود شود. همچنین ماشین مجازی جاوا (لایهای که bytecode جاوا را برای یک پلتفرم کامپیوتری معین تفسیر میکند) واسط دسترسی به منابع سیستم است و کدهای sandbox را محدود میکند.
در مدل اصلی امنیتی سندباکس، کد sandbox عموماً به عنوان کد غیرقابل اعتماد شناخته میشود. در نسخههای بعدی کیت توسعه جاوا (JDK)، سندباکس با معرفی چندین سطح اعتماد که کاربر میتواند برای کد sandbox مشخص کند، پیچیدهتر شده است. هرچه کاربر بیشتر به آن اعتماد کند، کد قابلیت بیشتری برای “play” خارج از sandbox را دارد.
در نسخه Java Development Kit 1.1 مفهوم “signed applet” معرفی شد. یک اپلت همراه با یک امضای دیجیتال میتواند حاوی کد قابل اعتمادی باشد که اگر مرورگر مشتری امضا را تشخیص دهد، مجاز است اجرا شود.
در JDK 2.0، جاوا تخصیص سطوح مختلف اعتماد به همه کدهای برنامه، چه به صورت محلی و چه از طریق اینترنت را فراهم میکند. مکانیزمی برای تعریف یک خطمشی امنیتی وجود دارد که تمام کدها را (چه امضا شده و چه غیر امضا شده) در حین اجرا بررسی میکند.
مزایای استفاده از Sandbox
استفاده از سندباکس برای آزمایش تغییرات نرم افزار قبل از شروع به کار، بدین معنی است که مشکلات کمتری در حین و بعد از آزمایش وجود خواهد داشت زیرا محیط آزمایش کاملاً از محیط تولید جداست.
Sandboxing برای قرنطینه کردن تهدیدات zero-day که از حفرههای امنیتی ناشناخته سوءاستفاده میکنند، بسیار مناسب است. اگرچه هیچ تضمینی وجود ندارد که Sandboxing این تهدیدات را متوقف کند، اما با جدا کردن تهدیدات از بقیه شبکه، یک لایه امنیتی اضافی را ارائه میدهد.
هنگامی که تهدیدها و ویروسها قرنطینه میشوند، کارشناسان امنیت سایبری میتوانند آنها را برای شناسایی الگوها مورد مطالعه قرار دهند و به جلوگیری از حملات آینده و شناسایی سایر آسیبپذیریهای شبکه کمک کنند.
همچنین Sandboxing مکمل سایر برنامههای امنیتی، از جمله نظارت بر رفتار و برنامههای ویروس است زیرا محافظت بیشتری در برابر گونههای خاصی از بدافزارها ارائه میکند که ممکن است یک برنامه آنتی ویروس آنها را شناسایی نکند.
بدافزارهای پیشرفتهتر میتوانند قبل از اجرا بررسی کنند که آیا یک Sandbox در حال اجرا هست یا خیر.
نمونههایی از استفاده از Sandbox
سندباکسها را میتوان برای جداسازی اجرای کد تقریباً در هر موقعیتی که کد نرم افزار اجرا میشود استفاده کرد. چند مثال استفاده از سندباکس برای ایزولهسازی اجرای کد، عبارتند از:
- مرورگرهای وب: یک مرورگر وب قابل اعتماد را میتوان در داخل یک Sandbox اجرا کرد. در این صورت اگر یک وبسایت از یک حفره امنیتی در آن مرورگر سوء استفاده کند، آسیب فقط محدود به sandbox شده و به حداقل میرسد.
- حفاظت از نرم افزار: ابزارهایی وجود دارد که کاربران را قادر میسازد تا نرمافزارهایی را که به آنها اعتماد ندارند در سندباکسها اجرا کنند تا نرمافزار نتواند به دادههای خصوصی آنها دسترسی داشته باشد یا به دستگاههایشان آسیب برساند. از آنجایی که به نظر میرسد sandbox برای نرم افزار یک سیستم کامل است، نرم افزار معمولاً نمیتواند تشخیص دهد که در یک محیط مجازی محدود شده است.
- تحقیقات امنیتی: متخصصان امنیت اطلاعات از sandboxها برای تحقیق یا شناسایی کدهای مخرب استفاده میکنند. برای مثال، یک ابزار امنیتی میتواند از وبسایتها بازدید کند تا روی فایلهایی که تغییر میکنند یا نرمافزاری که نصب و اجرا میکنند، نظارت کند. Windows Defender به کاربران این امکان را میدهد که نرم افزار آنتیویروس را در سندباکس اجرا کنند.
- مجازی سازی: VM در اصل نوعی sandbox است. این رویکرد از یک سندباکس مبتنی بر VM برای کنترل و بررسی برنامههای مشکوک استفاده میکند.
برنامههای سندباکس
برنامههای Sandbox عبارتند از:
- محتوای پلاگین مرورگر اغلب به استفاده از sandbox برای نمایش محتوای بارگیری شده توسط پلاگینهای مرورگر، از جمله Microsoft Silverlight و Adobe Flash (که اکنون منسوخ شده است) بستگی دارد.
با این حال، حفظ امنیت این نوع محتوا بسیار دشوار است. درحالیکه اجرای یک بازی فلش در یک صفحه وب امنتر از دانلود و اجرای آن به عنوان یک برنامه استاندارد بود، ناشران محتوا به دلیل مزیت انتشار محتوای فعال با استفاده از HTML5، تا حد زیادی از چنین افزونههایی فاصله گرفتند زیرا شامل این ویژگی sandbox است که به مرورگر دستور میدهد هر ویژگی را که ممکن است خطرات امنیتی ایجاد کند غیرفعال کند.
- فایلهای PDF و سایر اسناد ممکن است شامل کدهای اجرایی باشند، بنابراین Adobe Reader Protected Mode فایلهای PDF را در sandbox اجرا میکند، که مانع از فراتر رفتن آنها ازPDF viewer و تداخل با بقیه رایانه میشود.
مایکروسافت آفیس نیز برای جلوگیری از دستکاری ماکروهای ناامن در سیستم دارای حالت سندباکس است. همچنین کاربران ویندوز میتوانند از Sandbox داخلی ویندوز استفاده کنند.
- برنامههای موبایل عموماً توسط پلتفرمهای موبایل در Sandboxها اجرا میشوند. برنامههای iOS، Android و Windows از انجام بسیاری از کارهایی که برنامههای دسکتاپ استاندارد میتوانند انجام دهند، منع شدهاند.
به عنوان مثال، برای دسترسی به موقعیت مکانی کاربر، آنها باید مجوزها را اعلام کنند. علاوه بر این، سندباکس برنامهها را ایزوله میکند و از دستکاری آنها توسط یکدیگر جلوگیری میکند.