微軟準備於桌面版Edge實驗「超強安全模式」,關閉JIT

微軟宣布,將於桌面版Edge的Canary、Dev與Beta版實驗「超強安全模式」(Super Duper Secure Mode,SDSM),關閉用來改善瀏覽器效能的Just-In-Time Compilation(JIT,即時編譯)功能,以減少瀏覽器的安全威脅。

微軟Edge漏洞研究負責人Johnathan Norman說明,身為Edge的安全團隊,他們經常變換攻擊者與防禦者的角色,當要打造瀏覽器的攻擊程式時,首選攻擊目標通常是V8 JavaScript引擎,原因包括JavaScript引擎提供了強大的開採來源,有源源不斷的臭蟲,而且只要遵循簡單的模式就能開採,還能很快地展開行動。

但當作為瀏覽器的防禦方時就是惡夢了,因為陸續出現的臭蟲意謂著需要頻繁進行安全更新,容易開採代表駭客很快就能打造出攻擊程式,再加上修補空窗期,而且此一問題不僅侷限於V8,也波及大多數現代化的JavaScript引擎,不管是Google、微軟、Mozilla或其它業者都企圖透過靜態分析、抓漏專案與模糊測試來減輕相關威脅,這些工具雖然能夠快速辨識某些問題,但也會有所遺漏,使得JavaScript引擎依舊是瀏覽器主要的安全挑戰之一。

而原因之一還包括專門用來加速JavaScript特定任務的JIT,啟用JIT的JavaScript引擎在需要之前就把鬆散型態的JavaScript編譯成機器語言,亦為所謂的推測優化,因而能帶來相當程度的效能改善,讓JavaScript的效能足以比擬C++,只是,因JIT而衍生的安全漏洞也讓瀏覽器業者疲於奔命。

例如2019年之後與V8有關的安全漏洞中,就有45%藏匿在JIT中,同時Mozilla的分析也顯示,已被用於攻擊行動中的Chrome開採程式中,更有超過一半是濫用JIT漏洞。

於是微軟嘗試於效能及安全之間取得平衡,展開超強安全模式專案,決定於Edge中測試關閉JIT的作法。Norman說,此舉等於能夠去除V8中近半數的安全漏洞,也能減少安全更新或緊急修補的頻率,此外,為了部署V8 JIT,業者還必須捨棄重要的緩解技術,包括基於硬體的開採緩解技術 Controlflow-Enforcement Technology(CET),或是任意程式保護機制(Arbitrary Code Guard,ACG)等。

這代表著若關閉JIT,不僅可減少攻擊表面,還能啟用其它的緩解機制,提高駭客的攻擊門檻。

然而,關閉JIT最有可能的影響莫過於效能了,這使得Edge的效能實驗室為此執行了數百次的測試來觀察關閉JIT之後的效能表現。發現縱使在JavaScript效能評測中,其效能最多下滑了58%,但在Edge實驗室模擬實體網站的測試中,絕大多數的測試並未看到效能上的改變,只有少數出現效能提升或是衰退的情況,更重要的是,參與測試的使用者在關閉JIT之後,於每日的瀏覽行為中,幾乎沒有察覺到變化。

根據微軟的測試,關閉JIT之後,於網頁載入的測試中,有16.9%的效能變慢了,但有9.5%變快了,在記憶體的使用上有2.3%增加了,但4.6%變少了,在啟動速度上則是看到8.9%的改善,而在電力的使用上,有11.4%增加了,15%變少了。

Norman認為,大多數的使用者未能察覺到瀏覽時的變化,是因為JavaScript評測只代表了瀏覽器整體效能的一部分。

目前的SDSM專案關閉了JIT,並啟用了CET,且並不支援Web Assembly,有意參與測試的使用者可透過Edge Canary、Dev及Beta版的edge://flags來啟用。未來該專案將逐步加入更多的緩解機制並新增對Web Assembly的支援。