每周下载量达 3 万次的 pac-resolver NPM 软件包中存在漏洞

pac-resolver NPM 软件包每周下载量超过 3 万次,该软件包存在一个漏洞 (CVE-2021-23406),当从 Node.js 项目发送 HTTP 请求时,该漏洞允许其 JavaScript 代码在应用程序的上下文中执行。支持代理服务器自动配置功能。

pac-resolver 包解析包含自动代理配置脚本的 PAC 文件。 PAC 文件包含带有 FindProxyForURL 函数的常规 JavaScript 代码,该函数定义根据主机和请求的 URL 选择代理的逻辑。该漏洞的本质是,为了在 pac-resolver 中执行这段 JavaScript 代码,使用了 Node.js 中提供的 VM API,该 API 允许您在 V8 引擎的不同上下文中执行 JavaScript 代码。

指定的 API 在文档中明确标记为不用于运行不受信任的代码,因为它不提供正在运行的代码的完全隔离并允许访问原始上下文。该问题已在 pac-resolver 5.0.0 中得到解决,该版本已改为使用 vm2 库,该库提供了适合运行不受信任代码的更高级别的隔离。

每周下载量达 3 万次的 pac-resolver NPM 软件包中存在漏洞

当使用 pac-resolver 的易受攻击版本时,攻击者通过传输专门设计的 PAC 文件可以在使用 Node.js 的项目代码上下文中实现其 JavaScript 代码的执行,如果该项目使用具有依赖项的库与 pac 解析器。存在问题的库中最受欢迎的是 Proxy-Agent,它被列为 360 个项目的依赖项,包括 urllib、aws-cdk、mailgun.js 和 firebase-tools,每周下载总量超过 XNUMX 万次。

如果依赖 pac-resolver 的应用程序加载由支持 WPAD 代理自动配置协议的系统提供的 PAC 文件,则有权访问本地网络的攻击者可以通过 DHCP 使用代理设置分发来插入恶意 PAC 文件。

来源: opennet.ru

添加评论