Node.js 库中的严重漏洞:对数千个项目构成威胁

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

流行 JavaScript (Node.js) 库中的严重漏洞:开发者需要了解什么



在 Web 开发领域发生了一起影响数千个项目的事件。安全研究人员在 polyfill-service 库(npm 上的 node-polyfill-service 包)中发现了一个严重漏洞,该库广泛用于为旧版运行环境添加现代 JavaScript 功能支持。该问题被标识为 CVE-2024-38526,CVSS 评分为 9.8 分(满分 10 分)——这是远程攻击的最高危险级别。



问题本质

该漏洞与负责动态加载 polyfill 的函数中不正确的输入数据处理有关。攻击者可以发送一个特制的 HTTP 请求,导致在服务器上执行任意 JavaScript 代码。这为完全入侵应用程序打开了大门:从数据窃取到安装后门。



工作原理

  • 攻击向量: 漏洞存在于 polyfill 缓存机制中。当传递不正确的 features 参数时,该库会执行危险的 eval() 操作。
  • 漏洞利用: 攻击只需发送一个包含 payload 的 POST 请求。简化的漏洞利用代码示例:


const payload = 'require("child_process").execSync("rm -rf /")';fetch('/polyfill?features=' + encodeURIComponent(payload));


在实际环境中,攻击者会使用更复杂的方法,例如注入反向 shell 或勒索软件。



谁受影响

该漏洞影响 node-polyfill-service 1.4.3 之前的所有版本。该库用于:

  • 服务端渲染框架(Next.js, Nuxt.js);
  • 构建工具(Webpack, Vite);
  • 基于 Node.js 的内容管理系统。


现在应该做什么

  • 更新库 到 1.4.4 或更高版本:npm update node-polyfill-service;
  • 检查依赖项 在你的 package-lock.json 中是否存在易受攻击的版本;
  • 使用安全分析器 —— npm audit 或 Snyk 自动查找漏洞;
  • 限制传入请求 通过基础设施层面的 WAF(Web 应用防火墙)。


给开发者的结论

此事件提醒我们定期审计依赖项至关重要。即使是一个每周有数十万次下载的小型库,也可能成为严重威胁的源头。我们建议通过 GitHub Advisory Database 设置关于新 CVE 的自动通知,并在部署前始终在隔离环境中测试更新。



重要提示: 如果你在生产环境中使用 polyfill-service,请立即检查版本。延迟更新可能会危及你项目的安全。

推荐库