Firefox測試新版站點隔離功能可將每個網站置於單獨的進程中
Mozilla當前正在Firefox每夜構建版(Nightly Build)和Beta通道測試一項全新的安全體系架構,特點是能夠將每個站點都置於單獨的操作系統進程中。由官方描述可知,當前在Firefox啟動時,瀏覽器將啟動一個具有特權的父進程、八個Web內容進程、最多兩個附加的半特權Web內容進程,以及四個用於Web擴展、GPU操作、聯網和媒體解碼的實用程序進程。
Firefox站點隔離功能示意(來自:Mozilla官網)
不過在設置了一定數量的進程之後,後續很可能將惡意站點放入另一個站點已在使用的同一進程中,並賦予其訪問共享進程內存的權限。
在利用Spectre 漏洞攻擊的情況下,惡意站點很可能藉此取得同一進程中其它站點的數據。
此外現有方案意味著任何廣告、或嵌入頁面和子幀的內容,都將與父頁面置於相同的進程中,而不會區分它們是否來自同一站點。
慶幸的是,在實施了“站點隔離”政策之後,不屬於同一站點的每個嵌入式元素都將具有各自的進程,然後客戶端操作系統將為瀏覽器提供內存防護和安全性保證。
Mozilla 高級平台工程師Anny Gakhokidze 在博客中寫道:在更危險的情況下,惡意站點可能將合法站點嵌入子幀,並試圖誘騙受害者輸入敏感信息。
在成功執行類似Spectre 攻擊的情況下,頂級站點可能會從其嵌入的子幀訪問其不應訪問的敏感信息(反之亦然)。
而新版Firefox 瀏覽器引入的站點隔離安全架構,將有效地提升惡意站點執行此類攻擊的難度。
此外Firefox 會將同一網站的http 和https 版本都視作不同的站點,意味著兩者也將置於單獨的進程中。
ZDNet 指出,該功能將充分利用由社區維護的有效頂級域名列表,其中包括了github.io 和blogger.com 等在內站點。
這些網站擁有許多子域名節點,所以Firefox 也會將各個子版塊都視作單獨的站點來實施隔離。
Anny Gakhokidze 補充道,新架構也在其它方面改善了Firefox 的體驗:
比如一個站點消耗的計算資源(或垃圾收集)不該導致其它頁面的響應能力降級、或者在頁面崩潰的時候波及其它進程中的網頁。
更棒的是,通過使用更多進程來加載網站,將使得我們能夠把工作分配到許多CPU 核心,從而更高效地利用底層硬件。
據悉,Firefox 早在2019 年初就首次帶來了名為“Project Fission”的站點隔離功能,而競爭對手谷歌為Chrome 實施的站點隔離方案也有一段時間了。
感興趣的朋友,可嘗試在Firefox Nightly 中導航至about:preferences#experimental,然後啟用Fission 複選框並重啟瀏覽器。
至於Firefox 正式版/ Beta 通道的用戶,亦可導航至 about:config 頁面,然後將 fission.autostart 設定為啟用,並重啟瀏覽器。
最後,Linux平台的Firefox用戶請注意,Project Fission Wiki頁面上的許多已知問題表明,你們可能遭遇內存使用量過多、以及X11連接器耗盡資源等Bug 。