موزیلا اجرای فناوری جداسازی کتابخانه RLBox را آغاز کرد

محققان دانشگاه استنفورد، دانشگاه کالیفرنیا در سن دیگو و دانشگاه تگزاس در آستین توسعه یافته ابزار RLBoxکه می‌تواند به عنوان یک لایه ایزوله اضافی برای مسدود کردن آسیب‌پذیری‌ها در کتابخانه‌های تابع استفاده شود. RLBox قصد دارد مشکل امنیتی کتابخانه‌های شخص ثالث غیرقابل اعتمادی را که تحت کنترل توسعه‌دهندگان نیستند، اما آسیب‌پذیری‌های آنها می‌تواند پروژه اصلی را به خطر بیندازد، برطرف کند.

شرکت موزیلا برنامه ها فعال کردن RLBox در Linux-ساخت‌های فایرفاکس ۷۴ و macOS-فایرفاکس ۷۵ برای ایزوله کردن اجرای کتابخانه ساخته شده است گرافیتکه مسئول رندر کردن فونت‌ها است. RLBox مختص فایرفاکس نیست و می‌تواند برای جداسازی هر کتابخانه‌ای در هر پروژه‌ای مورد استفاده قرار گیرد. تحولات RLBox گسترش تحت مجوز MIT. RLBox در حال حاضر از پلتفرم‌ها پشتیبانی می‌کند Linux и macOS، پشتیبانی Windows بعداً انتظار می‌رود.

سازوکار عملیات RLBox شامل کامپایل کد C/C++ یک کتابخانه ایزوله به کد WebAssembly سطح پایین و میانی است که سپس به عنوان یک ماژول WebAssembly قالب‌بندی می‌شود، مجوزهایی که فقط برای این ماژول مشخص شده‌اند (برای مثال، یک کتابخانه پردازش رشته قادر به باز کردن یک سوکت یا فایل شبکه نخواهد بود). تبدیل کد C/C++ به WebAssembly با استفاده از wasi-sdk.

برای اجرای مستقیم، ماژول WebAssembly با استفاده از یک کامپایلر به کد ماشین کامپایل می‌شود. لوست و در یک "نانوپردازش" جداگانه، جدا از بقیه حافظه برنامه اجرا می‌شود. کامپایلر Lucet بر اساس همان کد موتور JIT است. جرثقیل، که در فایرفاکس برای اجرای WebAssembly استفاده می‌شود.

ماژول مونتاژ شده در یک ناحیه حافظه جداگانه عمل می‌کند و به بقیه فضای آدرس دسترسی ندارد. اگر از یک آسیب‌پذیری در کتابخانه سوءاستفاده شود، مهاجم محدود شده و قادر به دسترسی به نواحی حافظه فرآیند اصلی یا انتقال کنترل به خارج از محیط ایزوله نخواهد بود.


موزیلا اجرای فناوری جداسازی کتابخانه RLBox را آغاز کرد

راهنمایی سطح بالا برای توسعه‌دهندگان ارائه می‌شود APIکه امکان فراخوانی توابع کتابخانه‌ای را در حالت ایزوله فراهم می‌کند. هندلرهای WebAssembly تقریباً به هیچ منبع اضافی نیاز ندارند و تعامل با آنها خیلی کندتر از فراخوانی توابع معمولی نیست (توابع کتابخانه‌ای به صورت کد بومی اجرا می‌شوند و سربار فقط هنگام کپی کردن و تأیید داده‌ها در حین تعامل با محیط ایزوله ایجاد می‌شود). توابع کتابخانه‌ای ایزوله را نمی‌توان مستقیماً فراخوانی کرد و دسترسی به آنها نیاز به استفاده از
لایه invoke_sandbox_function()‎ را فراخوانی کنید.

به نوبه خود، اگر فراخوانی توابع خارجی از کتابخانه ضروری باشد، این توابع باید به طور صریح با استفاده از متد register_callback تعریف شوند (به طور پیش‌فرض، RLBox دسترسی به توابع را فراهم می‌کند) کتابخانه استانداردبرای اطمینان از ایمنی حافظه، ایزوله‌سازی اجرای کد کافی نیست؛ همچنین لازم است از بررسی جریان‌های داده برگشتی اطمینان حاصل شود.

مقادیر تولید شده در یک محیط ایزوله به عنوان غیرقابل اعتماد علامت گذاری شده و استفاده از آنها محدود است. برچسب‌های آلوده و برای "تمیز کردن" آنها نیاز دارند تایید و کپی کردن در حافظه برنامه.
بدون پاکسازی، تلاش برای استفاده از داده‌های آلوده در زمینه‌ای که نیاز به داده‌های منظم دارد (و برعکس) منجر به خطاهای زمان کامپایل می‌شود. آرگومان‌های تابع کوچک، مقادیر بازگشتی و ساختارها بین حافظه فرآیند و حافظه جعبه شنی کپی می‌شوند. برای مجموعه داده‌های بزرگتر، حافظه در جعبه شنی اختصاص داده می‌شود و یک "ارجاع جعبه شنی" مستقیم به فرآیند اصلی بازگردانده می‌شود.

منبع: opennet.ru

خرید هاست قابل اعتماد برای سایت های دارای حفاظت DDoS، سرورهای VPS VDS 🔥 خرید هاستینگ معتبر با محافظت در برابر حملات DDoS، سرورهای VPS و VDS | ProHoster