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,但这当然会随着模式的进一步发展和微调而发生变化。