一位以色列研究人员警告,Java开发者应考虑远离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尚未修复。因此他建议Java开发者使用pnpm、vlt或Bun。
他补充说,无论如何,Java开发者都应该保持所使用的Java包管理器为最新版本,以确保拥有最新的补丁。
各方回应情况
拥有并通过GitHub监管npm的微软,将关于这些漏洞的问题转给了GitHub。GitHub在声明中表示:"我们正在积极努力解决报告的新问题,因为npm会主动扫描注册表中的恶意软件。"与此同时,它敦促项目开发者采用Shai-Hulud攻击后发布的博客中的建议。
声明还指出,去年9月,GitHub表示正在加强npm的安全性,包括对身份验证和令牌管理进行更改。
GitHub还警告说,如果通过git安装的包含有prepare脚本,其依赖项和开发依赖项将被安装。"正如我们在提交问题单时分享的,这是一个有意的设计并按预期工作。当用户安装git依赖项时,他们信任该存储库的全部内容,包括其配置文件。"
Yomtov认为这种有意设计的解释"令人困惑"。
他表示,脚本绕过漏洞是在2024年11月26日通过HackerOne漏洞赏金计划报告的。虽然其他Java包管理器接受了报告,但npm表示平台按预期工作,"忽略脚本"命令应该防止运行未经批准的远程代码。
"我们写这篇文章不是为了羞辱任何人,"Yomtov在博客中说。"我们写它是因为Java生态系统值得更好,因为安全决策应该基于准确信息,而不是对无法维持的防护措施的假设。
"标准建议——禁用脚本并提交锁定文件——仍然值得遵循。但这不是完整的图景,"他说。"在PackageGate完全解决之前,组织需要对风险做出自己明智的选择。"
Q&A
Q1:什么是PackageGate漏洞?
A:PackageGate是研究人员在多个Java包管理器中发现的六个零日漏洞的统称,这些漏洞允许黑客绕过现有的安全防护措施,可能导致类似Shai-Hulud的恶意蠕虫攻击。
Q2:哪些包管理器已经修复了这些漏洞?
A:目前pnpm、vlt和Bun平台已经修复了PackageGate漏洞,但npm和yarn尚未修复。研究人员建议Java开发者暂时使用已修复漏洞的包管理器。
Q3:开发者现在应该采取什么安全措施?
A:除了继续遵循禁用生命周期脚本和提交锁定文件的标准建议外,开发者还应保持包管理器为最新版本,考虑使用已修复漏洞的平台如pnpm、vlt或Bun,并对风险做出明智的选择。
上一篇:南京:铁路安全宣传进校园
下一篇:拍拍福州|炮仗花如瀑 坊巷好出片