Firefox開始採用了一種稱為RLBox的方法,來增加Firefox的安全性。RLBox是一種新的沙盒技術,可有效率地轉換現有Firefox元件,使其在WebAssembly沙盒中執行,目前Mozilla已經將這項技術整合到Firefox程式碼庫中,會先用於Graphite字體塑形函式庫中。

Mozilla提到,像Firefox這種複雜且經高度最佳化的系統,維持記憶體安全是重要且困難的工作,由於Firefox主要是用C和C++開發而成,但這兩個語言要開發出安全的程式難度頗高,任何錯誤都可能導致程式被入侵。為此Mozilla目前採取了兩種方法,來提高Firefox的安全性,一種是將程式碼打散進多個沙盒程序中,並降低其權限,另外一種則是以更安全的程式語言Rust重寫程式碼。

不過這兩種方法都有其限制,程序級的沙盒會消耗大量的系統資源,必須要謹慎使用,而數百萬行的C++程式碼要以Rust重寫,則是一個大工程。因此Mozilla引入了第三種的方法RLBox沙盒技術,來提升Firefox安全性。

RLBox能以最大程度降低Firefox要以安全的方式,執行不受信任程式碼的負擔,其在C++類型系統中,強迫採用靜態資訊流和輕量級動態檢查。RLBox透過軟體的故障隔離與多核程序隔離,來達成有效的沙盒化。研究人員提到,RLBox付出的效能成本適度且短暫,對頁面的延遲影響很小,而現在RLBox已經被整合到Firefox中,對Graphite字體塑形函式庫進行沙盒處理。

Firefox利用Graphite來正確呈現部分複雜的字體,而之所以先對Graphite使用RLBox,Mozilla提到,是因為Graphite太小以致於無法放在自己的程序中處理,但因為其存在記憶體安全上的隱憂,即便是在網站隔離程序架構,也無法阻止惡意人士透過有漏洞的網頁,讓瀏覽器載入惡意字體。不過,重寫和維護這部分的程式碼,也不是Mozilla目前開發資源能夠應付的。

除了字體塑形函式庫,RLBox也可以用在其他函式庫上,即便是效能吃重的運算任務也沒問題,像是圖像解碼函式庫、影片解碼函式庫、音訊解碼函式庫,或是zlib解壓縮函式庫等。

有了WebAssembly沙盒核心基礎設施,Mozilla接下來便會擴大其在Firefox中的應用,除了在更多平臺上支援外,也會應用在更多的元件上,目前的重點擺在和Firefox捆綁一起的第三方函式庫上,未來也會擴大應用到第一方程式碼。這項隔離技術將會先在Linux的Firefox 74,和MacOS的Firefox 75版本上提供,不久之後也會部署到Windows版本上。


Advertisement

更多 iThome相關內容