摘要
越来越多的软件提供内置脚本引擎,支持通过脚本语言可编程式地调用各项程序功能。内置脚本引擎除了支持标准的脚本语言规范,还提供了一系列扩展的应用程序编程接口(Application Programming Interface, API)和内置对象。脚本引擎在丰富软件功能的同时,也引入了额外的攻击面。近年来曝出的内置脚本引擎安全漏洞多数与扩展API和内置对象相关。针对脚本引擎中的安全漏洞,目前的检测技术仅能检测出脚本引擎浅层解析代码中的漏洞,难以有效检测出涉及内置对象别名关系的深层次漏洞,例如释放后使用漏洞(use-after-free, UAF)。检测对象别名关系导致的UAF漏洞,需要解决两个关键的技术挑战。其一,如何高效地识别内置对象别名关系。其二,如何利用识别出的对象别名关系检测脚本引擎的UAF漏洞。为此,本文设计了一种基于数据结构特征发现的脚本引擎内置对象别名关系识别方法,并提出了一种利用别名关系构造式触发UAF漏洞的检测方案。我们利用内置对象数据结构特征,提高了别名关系识别效率。同时,引入了内置对象内存共享区域以辅助触发UAF漏洞。为了验证方案的有效性,我们在Adobe Reader的内置JavaScript脚本引擎中进行了实验。我们提出的方案成功地识别出了284对内置对象的别名关系,并检测出了4个未知的UAF漏洞,获得了厂商的确认和修复。实验结果表明,本文方法能有效识别内置对象别名关系并能成功应用于脚本引擎UAF漏洞的检测。
- 单位