恶意 npm 包
恶意 npm 包 是什么?
恶意 npm 包包含隐藏代码、安装后会窃取数据、植入恶意软件或破坏下游应用的 npm 软件包。
恶意 npm 包利用了 JavaScript 开发者对公共 npm 注册表的信任。攻击者可能发布全新的恶意包,接管被遗弃的项目,或者侵入维护者账号,向广泛使用的库推送被污染的版本。常见载荷包括凭据与令牌窃取器、加密货币钱包窃取程序,以及通过 npm 生命周期脚本在安装阶段执行的下载器。典型事件包括 2018 年的 event-stream(被转交的维护者注入比特币钱包窃取代码),以及 2021 年的 ua-parser-js(被劫持的版本向数百万台机器安装了挖矿程序与密码窃取器)。缓解措施包括锁文件、--ignore-scripts、为维护者启用 2FA、生成 SBOM、依赖扫描器以及供应链来源认证。
● 示例
- 01
2018 event-stream:新维护者引入 flatmap-stream 用以窃取 Copay 钱包资金。
- 02
2021 ua-parser-js:被劫持的版本部署了挖矿程序和密码窃取程序。
● 常见问题
恶意 npm 包 是什么?
包含隐藏代码、安装后会窃取数据、植入恶意软件或破坏下游应用的 npm 软件包。 它属于网络安全的 攻击与威胁 分类。
恶意 npm 包 是什么意思?
包含隐藏代码、安装后会窃取数据、植入恶意软件或破坏下游应用的 npm 软件包。
恶意 npm 包 是如何工作的?
恶意 npm 包利用了 JavaScript 开发者对公共 npm 注册表的信任。攻击者可能发布全新的恶意包,接管被遗弃的项目,或者侵入维护者账号,向广泛使用的库推送被污染的版本。常见载荷包括凭据与令牌窃取器、加密货币钱包窃取程序,以及通过 npm 生命周期脚本在安装阶段执行的下载器。典型事件包括 2018 年的 event-stream(被转交的维护者注入比特币钱包窃取代码),以及 2021 年的 ua-parser-js(被劫持的版本向数百万台机器安装了挖矿程序与密码窃取器)。缓解措施包括锁文件、--ignore-scripts、为维护者启用 2FA、生成 SBOM、依赖扫描器以及供应链来源认证。
如何防御 恶意 npm 包?
针对 恶意 npm 包 的防御通常结合技术控制与运营实践,详见上方完整定义。
恶意 npm 包 还有哪些其他名称?
常见的别称包括: 污染的包, 恶意 npm 发布。
● 相关术语
- attacks№ 1183
拼写抢注包(Typosquatted Package)
以与流行库非常相似的名称发布的恶意开源包,引诱开发者输入错误时误装。
- appsec№ 304
依赖混淆攻击
供应链攻击的一种,攻击者在公共注册中心发布与组织内部依赖同名的恶意包,诱使构建工具拉取公共版本。
- attacks№ 1116
供应链攻击
通过攻陷可信的第三方软件、硬件或服务提供商,进而入侵其下游客户的攻击方式。
- attacks№ 1097
Starjacking(蹭星攻击)
一种供应链伎俩,恶意软件包将仓库地址伪造为热门 GitHub 项目,以借用该项目的星标、贡献者与可信度。
- attacks№ 868
抗议软件(Protestware)
开源软件的维护者出于政治动机加入显示口号或破坏特定国家用户的代码,因而引发争议的一类软件。