研究人员在下载量超700万的Node.js 模块中发现其存在安全漏洞,攻击者利用该漏洞可以发起DoS 攻击或完全获取远程shell 访问权限。
该漏洞CVE编号为CVE-2020-7699,位于express-fileupload npm组件中,该组件从npm处下载量超过730万,其中不含有从GitHub、镜像网站和其他克隆库中下载的。
该漏洞属于Prototype Pollution(原型污染)漏洞类型,这是JS代码中的常见漏洞类型。因为JS是基于原型的语言,语言中的每个对象、函数和数据结构都有Prototype特征,可以通过"_proto__"进行修改。
使用这种设计漏洞的原型攻击通过注入不相适应的对象类型到现有的对象中来引发错误,奇热导致DoS攻击。
利用现有原型的攻击
由于express-fileupload 提供的"parseNested"特征使得现实的攻击成为可能。启用"parseNested"选项后,其负责将上传的JSON数据转化为对象。
安全研究人员Posix称express-fileupload 模块提供了[Node.js] 应用中上传和管理文件的多个选项,其中parseNested负责将参数降维。
'parseNested'选项如下图所示