流行的 NPM 包依赖关系中存在远程代码执行缺陷
编译:代码卫士
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
对 JavaScript 编程语言而言非常流行的 NPM 包 “pac-resolver”已修复了一个远程代码执行缺陷,它可影响很多 Node.js 应用程序。
开发工程师 Tim Perry 在 pac-resolver 依赖关系中发现一个缺陷。当运营人员试图发送 HTTP 请求时,可导致本地网络中的攻击者在 Node.js 进程中远程运行恶意代码。Node.js 是运行 JavaScript web 应用的流行的 JavaScript 运行时。
Perry 表示,“该包用于在 Pac-Proxy-Agent 中支持PAC 文件,进而用于 Proxy-Agent 中,之后用作 Node.js 中 HTTP 代理自动检测和配置的标准包。”PAC即“Proxy-Auto Config(代理自动配置)“,是指用 JavaScript 编写的 PAC 文件,用于分发复杂的代理规则,为使用既定主机名要代理的HTTP客户端下发指令,广泛使用于企业系统中。PAC 文件从本地网络服务器或远程服务器中分发,通常通过不安全的HTTP而非HTTPS分发。
由于 Proxy-Agent 用于 Amazon Web Services 云开发包 (CDK)、Mailgun SDK 和谷歌 Firebase CLI 中,因此这个问题波及范围广泛。它每周的下载量为300万次,在 GitHub上的公开依赖仓库为28.5万个。
该漏洞已在近期所有的数据包 v5.0.0 版本中修复,编号为 CVE-2021-23406,并于上周披露。这意味着 Node.js应用的很多开发人员均可能受影响,且需要更新至版本 5.0。依赖 Node.js 应用程序中5.0之前版本的 Pac-Resolver 用户均受影响。如果开发人员做出如下三种配置之一,则受影响:
直接使用 PAC 文件进行代理配置
在启用 WPAD 的系统上读取并使用 Node.js 中的操作系统代理配置
使用不是百分之百信任的其它来源的代理配置(env vars、配置我呢见、远程配置端点、命令行参数),在计算机上自由运行代码。
Perry 指出,“在任何一种情况下,当用户使用该代理配置发送HTTP请求时,攻击者(通过配置恶意 PAC URL、通过恶意文件拦截 PAC 文件请求或使用 WPAD)都能在计算机上远程运行任意代码。“
@whyseu @。@HFwuhome@惊蛰 @nimo @XuZ @淡然 @Marco韬 @王孟 @Wecat@nwnλ @MOBE @湘北二两西香葱@※ @搬砖小土妞@云烟过眼 @r00t@小风 @傲雪@最好走的路是套路 @Zhao.xiaojun @浅笑淡然 @X-Star @Erick2013 @小秦同学 @X @王骏 @欢寻 @nbp@Mr. Guo
如下是本书相关讲解:
在线阅读版:《2021中国软件供应链安全分析报告》全文库依赖关系和开源供应链带来的噩梦
Repo Jacking:依赖关系仓库劫持漏洞,影响谷歌GitHub等7万多个开源项目的供应链
谷歌推出 GKE 开源依赖关系漏洞奖励计划
GitHub 推出 Dependabot,为依赖关系保驾护航
https://www.zdnet.com/article/this-npm-package-with-millions-of-weekly-downloads-has-fixed-a-remote-code-execution-flaw/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。