G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT

浏览器安全 1年前 (2022) admin
548 0 0

今天为大家推荐的是由天津大学网络安全学院王俊杰研究团队与奇安信代码安全实验室、澳大利亚莫那什大学研究人员共同合作的论文–FuzzJIT: Oracle-Enhanced Fuzzing for JavaScript Engine JIT Compiler,该工作目前已被Usenix Security 2023接收。

G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT

背景介绍

浏览器为我们的生活提供了极大的便利,其中JavaScript语言及其引擎的作用不容小觑。JavaScript语言使得网页可以实时更新,与用户进行动态交互。而JavaScript引擎则负责JavaScript语言的执行。近年来,网页的响应速度成为了浏览器市场份额竞争的主要因素。为了提高网页的响应速度,JavaScript引擎对网页中的JavaScript进行了复杂的优化。

由于JavaScript是弱类型语言,开发者不用指定变量的类型,同时变量的类型在运行中还可以进行动态类型转换,因此,JavaScript引擎需要在执行过程中对变量的类型进行繁琐的判断,从而采取对应的操作。对JavaScript语言的优化是基于一条规律:如果我们观察到一个变量在以往的多次执行中都是属于某一种变量类型,那么在接下来的运行中,它很有可能还是同样的数据类型。基于这条假设,JavaScript引擎可以简化判断的过程,从而节省需要执行的指令数量。或者如果JavaScript引擎推断一个变量的类型或者取值范围,不会受到某些操作的影响,那么就不需要在操作前后都进行判断,从而节省执行的指令数量。

但是在实际中,变量的类型复杂多变,回调等复杂的操作的副作用难以建模,致使优化的实现变得困难。如果错误地去掉了必要的检查,就会导致严重的安全错误。我们统计了最近三年Pwn2Own比赛中使用的漏洞,在8次成功的攻击中,有6次使用了错误的优化漏洞。因此,检测JavaScript优化中的安全漏洞,是一个非常重要的课题。

G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT

本文方法

检测优化错误面临着三个挑战:

  1. 怎样保证生成的样本触发优化功能?

  2. 触发优化功能后,怎样尽量触发其中的优化错误?

  3. 优化错误被触发之后,怎样精确地进行检测?

针对这三个挑战,我们设计了三条策略:

  1. 通过分析不同JavaScript引擎触发优化的条件,发现可以总结为执行到足够的次数。因此,我们设计了不同JavaScript引擎对应的模版,例如使用for循环使得被测试的样本执行到足够的次数从而保证100%触发优化功能。

  2. 在触发优化功能之后,针对样本的生成进行了精心设计,使得它重点生成容易出现优化错误的特性,比如数组操作,对象操作,重复操作等。这些特性是根据针对将近200个历史优化漏洞的测试样本分析得来的。

  3. 最后一步比较关键,也是文中方法成功的主要原因。很多时候,优化错误发生了,但是并不会引起崩溃。很多采用程序崩溃作为检测方法的工具,往往会漏掉这样的优化错误。基于优化只应该提高运行效率,而不应该改变运行结果的原则,我们设计了一个加强的检测方法,程序优化不应该修改程序的执行结果,如果优化前后出现结果不一致,很可能是优化过程出现了错误。

实验验证

我们在四个主流的JavaScript引擎中验证了我们的方法,结果在一个月的时间内,找到了33个优化错误,其中很多都没有触发崩溃,很容易被其他的方法漏掉。

G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT


论文PDF:https://www.usenix.org/system/files/sec23summer_118-wang_junjie-prepub.pdf

作者介绍

王俊杰,天津大学智算学部网络安全学院副教授,研究方向主要是漏洞挖掘与利用,模糊测试等。曾在S&P,Usenix Security,ICSE,ISSTA,AsiaCCS等会议上发表过多篇高水平论文。研究成果获得谷歌,苹果,微软几十次致谢与漏洞奖励,获得微软2020年度全球最具价值安全研究人员榜单第78名。课题组现有多个硕士研究生名额,欢迎感兴趣的同学申请,联系方式:[email protected]

张之义,奇安信代码安全实验室研究员。在WEB方向、二进制方向和云安全方向获得近百次微软、谷歌、苹果、甲骨文等国内外知名大厂公开致谢,协助修复其主打产品漏洞,连续多年获得微软全球最具价值安全研究员其中在2022年度取得总榜第7名,在2022 Q2、Q3连续在Azure云安全方向第1名。学术上和多所国际知名高校针对前沿技术展开合作研究,已在Usenix Security顶级会议发表论文。目前主要研究的大方向是模糊测试、程序分析和逻辑漏洞,致力于通过工程化的方式发现软硬件缺陷。对研究方向感兴趣的同学,欢迎进一步沟通交流、思维碰撞:[email protected]


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT

版权声明:admin 发表于 2022年11月14日 下午8:35。
转载请注明:G.O.S.S.I.P 阅读推荐 2022-11-14 FuzzJIT | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...