关键词
安全漏洞
新的研究发现,npm 注册表中有 800 多个软件包与其注册表条目存在差异,其中 18 个被发现利用了一种称为 manifest confusion 的技术。
调查结果来自网络安全公司JFrog,该公司表示,威胁行为者可能会利用该问题来诱骗开发人员运行恶意代码。
“这是一个实际的威胁,因为开发人员可能会被诱骗下载看似无辜的软件包,但其隐藏的依赖项实际上是恶意的,”安全研究员安德烈·波尔科夫尼琴科告诉黑客新闻。
2023 年 7 月,安全研究员 Darcy Clarke 发现清单和软件包元数据的不匹配可能被武器化,以发动软件供应链攻击。
问题源于以下事实:npm 注册表不会验证 tarball (package.json) 中包含的清单文件是否与在发布过程中通过对包 URI 终结点的 HTTP PUT 请求提供给 npm 服务器的清单数据匹配。
因此,威胁参与者可以利用这种缺乏交叉验证的机会,提供包含隐藏依赖项的不同清单,该清单在包安装期间进行处理,以悄悄地将恶意依赖项安装到开发人员的系统上。
“可见的或'假的'清单可能会误导开发人员,甚至误导依赖 npm 注册表数据库中可用数据的审计工具,”JFrog 说。“实际上,安装程序从压缩包中获取package.json文件,这可能与HTTP PUT请求中提供的可见文件不同。”
该公司表示,它发现了 800 多个软件包,其中 npm 注册表中的清单与压缩包中的package.json文件不匹配。
虽然其中许多不匹配是由于协议规范差异或软件包文件脚本部分的变化造成的,但据说其中 18 个被设计为利用明显的混淆。
一个值得注意的软件包是 yatai-web-ui,它旨在向服务器发送 HTTP 请求,其中包含有关安装软件包的计算机的 IP 地址的信息。
研究结果表明,威胁行为者从未使用攻击媒介进行中毒攻击。也就是说,开发人员必须采取措施确保软件包没有可疑行为。
“由于 npm 没有解决这个问题,因此仅通过它们在 npm 网站上的外观来信任软件包可能会有风险,”Polkovnichenko 说。
“组织应该引入程序,验证进入组织或被其开发团队使用的所有包都是安全的,并且是可信的。特别是在明显混淆的情况下,需要分析每个包,以查看是否存在任何隐藏的依赖关系。
END
原文始发于微信公众号(安全圈):【安全圈】超过800个npm包存在差异,其中18个较危险可被利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论