首页
学习
活动
专区
圈层
工具
发布

npm和yarn包管理器存在安全漏洞可绕过防护

一位以色列研究人员警告,JavaScript开发者应考虑远离npm和yarn平台来分发他们的工作,因为新发现的安全漏洞允许威胁行为者运行类似Shai-Hulud的恶意蠕虫攻击。

这一警告来自Koi Security的Oren Yomtov,他在周一的博客中披露了在多个包管理器中发现的六个零日漏洞,这些漏洞可能允许黑客绕过去年11月Shai-Hulud攻击npm并破坏超过700个包后推荐的防护措施。

推荐防护措施包括

这些推荐的防护措施包括:

禁用运行生命周期脚本的能力,即在包安装过程中自动运行的命令;

将锁定文件完整性检查(package-lock.json、pnpm-lock.yaml等)保存到版本控制(git)中。锁定文件记录依赖树中每个包的确切版本和完整性哈希值。在后续安装中,包管理器会根据这些哈希值检查传入的包,如果不匹配,安装就会失败。如果攻击者破坏了某个包并推送恶意版本,完整性检查应该能够捕获不匹配并阻止其安装。

Yomtov表示,11月之后这些建议"从GitHub安全指南到企业政策文档,都成了标准建议","因为如果恶意代码无法在安装时运行,且依赖树被锁定,你就是安全的。"

他在邮件采访中补充说,这个建议仍然有效。

PackageGate漏洞的影响

然而,他发现的这些被称为"PackageGate"的漏洞允许黑客绕过这两种防护措施,需要所有平台来解决。

到目前为止,pnpm、vlt和Bun平台已经修复了绕过漏洞,但npm和yarn尚未修复。因此他建议JavaScript开发者使用pnpm、vlt或Bun。

他补充说,无论如何,JavaScript开发者都应该保持所使用的JavaScript包管理器为最新版本,以确保拥有最新的补丁。

各方回应情况

拥有并通过GitHub监管npm的微软,将关于这些漏洞的问题转给了GitHub。GitHub在声明中表示:"我们正在积极努力解决报告的新问题,因为npm会主动扫描注册表中的恶意软件。"与此同时,它敦促项目开发者采用Shai-Hulud攻击后发布的博客中的建议。

声明还指出,去年9月,GitHub表示正在加强npm的安全性,包括对身份验证和令牌管理进行更改。

GitHub还警告说,如果通过git安装的包含有prepare脚本,其依赖项和开发依赖项将被安装。"正如我们在提交问题单时分享的,这是一个有意的设计并按预期工作。当用户安装git依赖项时,他们信任该存储库的全部内容,包括其配置文件。"

Yomtov认为这种有意设计的解释"令人困惑"。

他表示,脚本绕过漏洞是在2024年11月26日通过HackerOne漏洞赏金计划报告的。虽然其他JavaScript包管理器接受了报告,但npm表示平台按预期工作,"忽略脚本"命令应该防止运行未经批准的远程代码。

"我们写这篇文章不是为了羞辱任何人,"Yomtov在博客中说。"我们写它是因为JavaScript生态系统值得更好,因为安全决策应该基于准确信息,而不是对无法维持的防护措施的假设。

"标准建议——禁用脚本并提交锁定文件——仍然值得遵循。但这不是完整的图景,"他说。"在PackageGate完全解决之前,组织需要对风险做出自己明智的选择。"

Q&A

Q1:什么是PackageGate漏洞?

A:PackageGate是研究人员在多个JavaScript包管理器中发现的六个零日漏洞的统称,这些漏洞允许黑客绕过现有的安全防护措施,可能导致类似Shai-Hulud的恶意蠕虫攻击。

Q2:哪些包管理器已经修复了这些漏洞?

A:目前pnpm、vlt和Bun平台已经修复了PackageGate漏洞,但npm和yarn尚未修复。研究人员建议JavaScript开发者暂时使用已修复漏洞的包管理器。

Q3:开发者现在应该采取什么安全措施?

A:除了继续遵循禁用生命周期脚本和提交锁定文件的标准建议外,开发者还应保持包管理器为最新版本,考虑使用已修复漏洞的平台如pnpm、vlt或Bun,并对风险做出明智的选择。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O5BqmEJNVxQ6kC3f9ZCJJh5Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券