Microsoft Edge 測試禁用 JavaScript JIT 編譯器以提高安全性
微軟一直在用他們的 Edge 瀏覽器的特殊版本運行實驗和性能測試,其中 JavaScript 即時編譯器被禁用。該實驗的目標是查看這對安全性有多大的有益影響。
JIT 或即時解釋器是一個模塊,在其中動態處理和編譯 JavaScript,因為瀏覽器訪問代碼。雖然 C++ 和 C# 等語言在執行之前首先由編譯器處理,但顧名思義,即時解釋器在實時讀取 JavaScript 時對其進行處理和優化。
微軟發布了一篇名為《Super Duper Secure Mode》的文章,重點進行了在 Edge 中禁用 JIT 編譯器的實驗。此更改的亮點在於,在關閉 JIT 編譯器的情況下,瀏覽器能夠利用多種與 JIT 不兼容的保護技術。
其中包括英特爾的控制流執行技術 (CET),以及微軟的任意代碼保護——Windows 中存在的額外緩解措施。
由 MS Edge 漏洞研究負責人 Jonathan Normal 撰寫的 Microsoft 文章稱,這些技術與 JIT 不兼容的事實是“不幸的”,因為解釋器處理的是“不受信任的內容”,這些內容應該在權限上受到限制,並且“鎖定”盡可能。
ZDNet 報告說,雖然微軟進行的內部測試聲稱用戶在禁用 JIT 時幾乎沒有註意到任何可觀察到的減速,但外部基準測試記錄了性能的顯著下降。
頁面加載時間也受到了影響,微軟報告說回歸“大約 17%”,而瀏覽器啟動時間在禁用 JIT 的情況下略有改善。
想要自行測試 Super Duper Secure 模式的用戶需要獲取 Edge 瀏覽器的 Beta 版並在 edge://flags 設置頁面中打開該模式。
目前,WebAssembly 不兼容 Super Duper Secure 模式,僅開啟了 Intel 的 CET,但這當然會隨著模式的進一步發展和微調而發生變化。