Chromium Chronicle #5:在沙箱外編寫程式碼

第 5 集:由 Ade in Mountain View, CA (2019 年 8 月)
先前劇集

Chrome 分為多個程序。有些機構採用沙箱機制,因此可降低系統和使用者帳戶的存取權。在沙箱程序中,允許惡意程式碼執行的錯誤就大幅降低。

瀏覽器程序沒有沙箱機制,因此錯誤可能會讓惡意程式碼取得整個裝置的完整存取權。您該採取什麼不同的做法?其他程序為何?

沙箱圖表

所有程式碼都有錯誤。在瀏覽器程序中,這些錯誤會允許惡意程式碼安裝程式、竊取使用者資料、調整電腦設定、存取所有瀏覽器分頁的內容、登入資料等。

在其他程序中,OS 存取權會因為平台專屬的限製而受到限制。詳情請參閱 Chrome 的沙箱實作指南

請務必避免下列常見錯誤:

兩項規則

  • 請勿在瀏覽器程序中使用 C++ 剖析或解讀不可信任的資料。
  • 請勿信任轉譯器聲明要代表的來源。可使用瀏覽器的 RenderFrameHost 安全地取得目前來源。


正確做法

請改用下列最佳做法:

  • 如果程式碼處於瀏覽器程序,請特別留意。
  • 驗證其他程序中的所有處理序間通訊 (IPC)。假設所有其他程序都已受到入侵,並阻止您進行詐騙。
  • 請在轉譯器、公用程式程序或其他沙箱程序中進行處理作業。在理想情況下,也應使用 JavaScript 等記憶體安全語言 (因此 >50% 的安全性錯誤)。

多年來,我們會在瀏覽器程序中執行網路堆疊 (例如 HTTP、DNS、QUIC),導致一些重大安全漏洞。在某些平台上,網路現在有自己的程序,並且會加入沙箱。

其他資源