Chromium Chronicle #5: کدنویسی خارج از Sandbox

قسمت 5: توسط Ade در Mountain View، CA (اوت، 2019)
قسمت های قبلی

کروم به فرآیندها تقسیم می شود. برخی از آنها sandboxed هستند، به این معنی که آنها دسترسی به سیستم و حساب های کاربران را کاهش داده اند. در یک فرآیند sandboxed، اشکالاتی که به کدهای مخرب اجازه اجرا می‌دهند، بسیار کم‌تر هستند.

فرآیند مرورگر فاقد جعبه ایمنی است ، بنابراین یک باگ می‌تواند به کد مخرب دسترسی کامل به کل دستگاه بدهد. چه کاری را باید متفاوت انجام دهید؟ و وضعیت سایر فرآیندها چگونه است؟

نمودار سندباکس

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

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

اطمینان حاصل کنید که از اشتباهات رایج زیر جلوگیری کنید:

قانون دو

  • داده های غیرقابل اعتماد را با استفاده از C++ در فرآیند مرورگر تجزیه و تفسیر نکنید.
  • به مبدایی که یک رندر ادعا می کند نشان می دهد اعتماد نکنید. RenderFrameHost مرورگر را می توان برای دریافت امن منبع فعلی استفاده کرد.


انجام دادن

در عوض، از بهترین شیوه های زیر استفاده کنید:

  • اگر کد شما در فرآیند مرورگر است، بسیار پارانوئید باشید.
  • تمام IPC را از سایر فرآیندها تأیید کنید. فرض کنید همه فرآیندهای دیگر از قبل به خطر افتاده و برای فریب شما ساخته شده اند.
  • پردازش خود را در یک فرآیند رندر یا ابزار یا سایر فرآیندهای sandbox شده انجام دهید. در حالت ایده‌آل، از یک زبان امن برای حافظه مانند جاوا اسکریپت نیز استفاده کنید (بیش از 50 درصد اشکالات امنیتی را حل می‌کند).

برای سال‌ها، ما پشته‌های شبکه (مانند HTTP، DNS، QUIC) را در فرآیند مرورگر اجرا کردیم که منجر به آسیب‌پذیری‌های حیاتی شد. در برخی از پلتفرم‌ها، شبکه‌سازی در حال حاضر فرآیند خاص خود را دارد و یک جعبه شنی در راه است.

منابع اضافی

  • قانون دو Chromium : بیش از دو مورد از داده‌های ناامن، کد ناامن و فرآیند ناایمن نیست.
  • اعتبارسنجی داده‌های IPC : راهنمای نحوه اطمینان از اینکه IPC‌های فرآیند رندر پر از فیب‌ها و ارائه‌های نادرست نیستند.