RLBox ، فناوری جداسازی جدید کتابخانه که توسط موزیلا استفاده شده است

آرم Firefox

محققان دانشگاه استنفورداز دانشگاه کالیفرنیا در سن دیگو y la دانشگاه تگزاس در آستین آنها توسعه یافته اند مجموعه ای از ابزارها که آنها نام آنها را گذاشتند «RLBox» ، که می تواند به عنوان سطح اضافی عایق استفاده شود برای جلوگیری از آسیب پذیری در کتابخانه های عملکرد.

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

موزیلا قصد دارد از RLBox در ساخت Firefox 74 برای لینوکس و مجموعه های macOS در Firefox 75 برای جدا کردن اجرای کتابخانه Graphite، که مسئول نمایندگی منابع است.

در عین حال ، RLBox مخصوص Firefox نیست و می تواند برای جدا کردن هر کتابخانه در پروژه های خودسرانه مورد استفاده قرار گیرد.

درباره RLBox

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

برای اعدام مستقیم ، ماژول WebAssemble با استفاده از کامپایلر Lucet در کد ماشین کامپایل می شود و در یک "پردازش نانو" جدا از بقیه حافظه برنامه اجرا می شود. کامپایلر Lucet بر اساس همان کدی است که موتور Cranelift JIT در Firefox برای اجرای WebAssemble استفاده کرده است.

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

یک API سطح بالا برای توسعه دهندگان ارائه شده است که به شما امکان می دهد توابع کتابخانه را در حالت انزوا فراخوانی کنید.

ل کنترل کننده های WebAssemble تقریباً به منابع اضافی نیاز ندارند و تعامل با آنها بسیار کندتر از فراخوانی توابع معمولی نیست (توابع کتابخانه به صورت کد محلی اجرا می شوند و فقط هنگام کپی و تأیید داده ها در فرآیند تعامل با محیط جعبه ماسه ، بار اضافی رخ می دهد) .

توابع یک کتابخانه جداگانه را نمی توان مستقیماً فراخوانی کرد و برای دسترسی به آنها ، باید از لایه استفاده کنید invoke_sandbox_function ().

در عوض ، اگر آنها نیاز به فراخوانی توابع خارجی از کتابخانه دارند ، این توابع باید صریحاً با استفاده از روش Register_callback تعریف شوند (به طور پیش فرض ، RLBox دسترسی به توابع استاندارد کتابخانه را فراهم می کند).

برای اطمینان از عملکرد حافظه ایمن ، جداسازی اجرای کد کافی نیست و همچنین شما باید تأیید جریان داده های برگشتی را ارائه دهید.

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

بدون تمیز کردن ، تلاش برای استفاده از داده های آلوده در زمینه ای که به داده های منظم نیاز دارد (و بالعکس) منجر به ایجاد خطا در مرحله تدوین می شود.

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

تحولات RLBox تحت مجوز MIT توزیع می شود. RLBox در حال حاضر از Linux و macOS پشتیبانی می کند و انتظار می رود بعداً با ویندوز سازگار باشد.

اگر می خواهید درباره این فناوری جدیدی که موزیلا قصد دارد در Firefox پیاده سازی کند بیشتر بدانید ، می توانید با توسعه آن مشورت کرده و همچنین API را آزمایش کنید در لینک زیر.


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

اولین کسی باشید که نظر

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.