GHunter:JavaScript运行时中通用原型污染插件
密码学与安全
2024-07-16 v1
摘要
原型污染是一种影响JavaScript代码的近期漏洞,可能导致任意代码执行等高危攻击。该漏洞根植于JavaScript的基于原型的继承机制,使攻击者能够在运行时将任意属性注入对象的原型中。在实际应用中,原型污染的影响取决于是否存在一些本无害的代码片段(即插件),这些代码片段不经意地读取来自攻击者控制的属性,以执行安全敏感操作。虽然先前的研究主要关注第三方库和客户端应用程序中的插件,但JavaScript运行时环境中的插件 arguably 更具影响力,因为它们影响任何在这些运行时上执行的应用程序。在本文中,我们设计、实现并评估了一条名为GHunter的管线,用于系统性地检测V8-based JavaScript运行时中的插件,主要关注Node.js和Deno。GHunter支持轻量级动态污点分析,以自动识别插件候选对象,我们手动验证这些候选对象以构建 proof-of-concept 漏洞利用。我们通过修改V8引擎和目标运行时,并添加促进手动验证的功能来实现GHunter。基于Node.js和Deno的测试套件,我们在这些运行时中使用GHunter进行插件研究。我们在Node.js中发现了56个新的插件,在Deno中发现了67个插件,涉及任意代码执行(19个)、特权提升(31个)、路径遍历(13个)等漏洞。此外,我们首次将现有针对原型污染和插件的缓解措施系统化地归纳为开发指南。我们收集了一组易受攻击的应用程序,并通过我们的指南重新审视这些修复。通过这一练习,我们发现了一个高危CVE,导致远程代码执行,这是由于错误地修复了一个插件。
关键词
引用
@article{arxiv.2407.10812,
title = {GHunter: Universal Prototype Pollution Gadgets in JavaScript Runtimes},
author = {Eric Cornelissen and Mikhail Shcherbakov and Musard Balliu},
journal= {arXiv preprint arXiv:2407.10812},
year = {2024}
}
备注
18 pages, 1 figure, 6 tables, 9 listings