寂静的春天:原型污染导致 Node.js 中的远程代码执行
密码学与安全
2022-11-14 v2 编程语言
摘要
原型污染是一种影响 JavaScript 等基于原型语言及 Node.js 平台的危险漏洞。它指攻击者能够在运行时向对象的根原型注入属性,并随后触发执行访问该对象原型上这些属性的合法代码小工具(gadget),从而导致拒绝服务(DoS)、权限提升和远程代码执行(RCE)等攻击。尽管有轶事证据表明原型污染会导致 RCE,当前研究未解决小工具检测这一挑战,因此仅展示了 DoS 攻击的可行性,且主要针对 Node.js 库。本文中,我们以整体方式研究该问题,从原型污染检测到小工具检测,旨在超越 DoS,在完整的 Node.js 应用中寻找端到端漏洞利用。我们构建了首个多阶段框架,使用多标签静态污点分析识别 Node.js 库和应用中的原型污染,并采用混合方法检测通用小工具,具体而言通过分析 Node.js 源代码实现。我们在 GitHub 的静态分析框架 CodeQL 上实现该框架,在 Node.js 核心 API 中发现 11 个通用小工具,可导致代码执行。此外,我们对 15 个流行 Node.js 应用运用该方法识别原型污染和小工具。我们手动利用了三个高关注度应用(如 NPM CLI、Parse Server 和 Rocket.Chat)中的八个 RCE 漏洞。我们的结果提供了警示性证据:原型污染与强大的通用小工具结合会导致 Node.js 中的 RCE。
引用
@article{arxiv.2207.11171,
title = {Silent Spring: Prototype Pollution Leads to Remote Code Execution in Node.js},
author = {Mikhail Shcherbakov and Musard Balliu and Cristian-Alexandru Staicu},
journal= {arXiv preprint arXiv:2207.11171},
year = {2022}
}
备注
USENIX Security'23