揭示无形之威胁:基于动态污点分析的原型污染gadget检测与评估
密码学与安全
2023-11-08 v1 编程语言
摘要
无论好坏,JavaScript都是现代Web的基石。像JavaScript这样的基于原型的语言易受原型污染漏洞影响,使攻击者能够将任意属性注入到对象的原型中。攻击者随后可通过执行原本良性的代码片段(即所谓的gadget)来利用注入的属性,这些gadget会执行安全敏感操作。攻击的成功在很大程度上取决于gadget的存在,并导致权限提升和任意代码执行(ACE)等高影响力利用。本文提出Dasty,这是首个半自动化流水线,可帮助开发者在其应用的软件供应链中识别gadget。Dasty面向服务端Node.js应用,并依赖于我们所实现的动态AST级插桩所增强的动态污点分析。此外,Dasty提供通过IDE可视化代码流的支持,从而便利后续用于构建概念验证利用的手动分析。为说明gadget的危害,我们在一项针对依赖度最高的NPM包的研究中使用Dasty,分析可导致ACE的gadget存在情况。Dasty识别出1,269个服务端包,其中631个具有可能抵达危险汇聚点的代码流。我们手动排序并验证候选流,为49个NPM包(包括ejs、nodemailer和workerpool等流行包)构建概念验证利用。为探究Dasty如何与现有工具结合以发现端到端利用,我们对一个流行的数据可视化仪表板进行深入分析,发现一个导致远程代码执行的高危CVE-2023-31415。我们的结果首次系统性地展示了服务端gadget的危害,并呼吁进一步研究以解决该问题。
引用
@article{arxiv.2311.03919,
title = {Unveiling the Invisible: Detection and Evaluation of Prototype Pollution Gadgets with Dynamic Taint Analysis},
author = {Mikhail Shcherbakov and Paul Moosbrugger and Musard Balliu},
journal= {arXiv preprint arXiv:2311.03919},
year = {2023}
}