微软宣布,将于桌面版Edge的Canary、Dev与Beta版实验“超强安全模式”(Super Duper Secure Mode,SDSM),关闭用来改善浏览器性能的Just-In-Time Compilation(JIT,即时编译)功能,以减少浏览器的安全威胁。
微软Edge漏洞研究负责人Johnathan Norman说明,身为Edge的安全团队,他们经常变换攻击者与防御者的角色,当要打造浏览器的攻击程序时,首选攻击目标通常是V8 JavaScript引擎,原因包括JavaScript引擎提供了强大的开采来源,有源源不断的bug,而且只要遵循简单的模式就能开采,还能很快地展开行动。
但当作为浏览器的防御方时就是噩梦了,因为陆续出现的bug意味着需要频繁进行安全更新,容易开采代表黑客很快就能打造出攻击程序,再加上修补空窗期,而且该问题不仅局限于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的支持。