网络安全
NPM 供应链攻击:发生了什么以及如何修复
Securities.io 秉持严格的编辑标准,并可能通过审核链接获得报酬。我们并非注册投资顾问,本文亦不构成投资建议。请查看我们的 会员披露.

加密货币行业和整个世界最近经历了一次惊恐,安全专家发现针对 Node.js 生态系统的供应链攻击已经危及多达 18 个 npm 包。
这是因为这几个软件包每周的下载量高达数十亿次。
软件包 使用 分发第三方软件。通常通过软件包管理器从外部来源获取,通常包含源代码、库、文档以及构建和运行软件所需的其他文件。
现在,包含恶意软件的软件包会伪装成合法软件包,但实际上它是一个旨在感染软件的恶意程序。进入系统后,恶意软件包中的恶意软件可以修改文件, 窃取数据,甚至接管整个系统来按照攻击者的意愿行事。
虽然 Python 和 .NET 等其他主要开源生态系统同样容易受到攻击,但 JavaScript 的广泛使用使其特别容易受到网络犯罪分子的攻击。
Node.js 是一个建立在 JavaScript 之上的开源运行时环境,使开发人员能够在 Web 浏览器之外执行他们的代码。
传统上, 解释型编程语言主要以帮助网页交互而闻名,主要用于 用于浏览器内的客户端 Web 开发,但 Node.js 将 JavaScript 的使用扩展到服务器端和其他应用程序。
使用 Node.js,开发人员可以构建快速且可扩展的应用程序,如 Web 服务器、API、工具等。
它受益于通过 npm 提供的庞大开源库和工具生态系统,这简化了开发并为各种功能提供了解决方案。
Node 包管理器(npm)是 JavaScript 开发中的关键工具,它 用来 查找、构建和管理代码包。它有助于处理依赖关系、实现协作并简化工作流程。
这个世界上最大的软件注册表包含超过 3 万个代码包,并且完全免费使用。
任何人都可以下载所有 npm 公共软件包,无需注册。开源开发者使用 npm 共享和借用软件,而许多组织也使用它来管理私有开发。
为了在您的计算机上安装 npm,您必须先安装 Node.js。
JavaScript 的包管理器由 npm, Inc. 维护,它是世界领先的软件开发平台 GitHub 的子公司,自 2018 年起归微软所有,当时这家科技巨头以 7.5 亿美元收购了它,以增强开发人员的能力。
上周,全球超过 17 万开发者所依赖的这款工具遭到入侵,互联网上一度引发恐慌,但好在专家们及早发现了问题,攻击者窃取的损失不超过 50 美元。事情的经过如下!
NPM 供应链攻击事件(2025 年 XNUMX 月)
在 JavaScript 生态系统遭遇的大规模供应链攻击中,黑客利用恶意软件入侵了一系列 npm 软件包。此次攻击的目的是窃取毫无戒心的用户的数字资产。
特别是开发者“qix”的 npm 帐户遭到黑客攻击。
Qix 是一个开源维护者帐户, 被妥协了 通过网络钓鱼攻击。 本篇 允许攻击者用恶意代码感染 18 个流行的 npm 软件包。这些软件包每周的下载量高达数亿次,因为它们 嵌入 在框架、开发人员工具和生产服务中。
受影响的软件包包括 chalk、debug、color-name、wrap-ansi 和 ansi-styles,它们是最受欢迎的软件包,而受影响不太流行的 npm 软件包包括 backslash、chalk-template 和 has-ansi。
滑动滚动→
| 小包装 | 受损版本 | 操作 |
|---|---|---|
| 调试 | 4.4.2 | 固定至 4.4.2 之前版本;重新安装;扫描构建日志 |
| 粉笔 | 5.6.1 | 固定到 5.6.1 之前版本;重新部署干净版本 |
| ansi 样式 | 6.2.2 | 固定至 6.2.2 之前版本;审计下游部门 |
| ansi-regex | 6.2.1 | 固定至 6.2.1 之前版本 |
| 剥离式 | 7.1.1 | 固定至 7.1.1 之前版本 |
| 包装-ansi | 9.0.1 | 固定至 9.0.1 之前版本 |
| 颜色、颜色转换、颜色字符串、颜色名称 | 5.0.1 / 3.1.1 / 2.1.1 / 2.0.1 | 固定到预先列出的版本;重新锁定并重建 |
| has-ansi,支持颜色,slice-ansi | 6.0.1 / 10.2.1 / 7.1.1 | 固定到预先列出的版本 |
| 反斜杠、is-arrayish、error-ex、simple-swizzle、chalk-template、supports-hyperlinks | 0.2.1/0.3.3/1.3.3/0.2.3/1.1.1/4.1.1 | 固定到预先列出的版本 |
| duckdb、@duckdb/node-api、@duckdb/node-bindings、@duckdb/duckdb-wasm | 1.3.3 / 1.3.3 / 1.3.3 / 1.29.2 | 避免使用列出的版本;等待供应商更新 |
所有受影响的包裹都已 被移除 通过 npm 注册表。 通过危害高价值的开源维护者,此次攻击使人们对开源软件(OSS)生态系统的信任成为武器,因为开发人员不会审核每个依赖项 他们使用。 他们所做的就是依靠他们的使用和声誉,以及 注册中心的安全性。

为了窃取这些软件包,黑客采取了网络钓鱼的方式。 攻击者首先发起网络钓鱼活动来劫持 npm 包维护者的帐户,然后将恶意代码注入 npm 包中,然后上传受感染的版本。
开发人员 Josh Junon 是钓鱼邮件的受害者,该邮件是一起模仿 npm 的大型攻击活动的一部分。攻击者利用一个模仿 npm 登录页面的钓鱼网站窃取了他的登录凭证。攻击者一旦登录,就立即更改 Junon npm 帐户中存档的电子邮件地址,从而锁定了 Junon。
“嗨,是的,我被黑了。抱歉各位,太丢人了。” 写 Junon 在 HackerNews 上证实了此事。他解释说,只有 npm 受到影响:
乍一看还挺合理的。我没找借口,只是这周过得有点漫长,早上又有点慌乱,只是想把待办事项清单上的一项删掉。我犯了一个错误,点开了链接,而不是直接去官网。
该钓鱼电子邮件来自 support [at] npmjs [dot] help,并使用恐吓手段让 Junon 点击链接,从而将他重定向到钓鱼网站。
攻击者假装来自 npm,要求他更新他的 2FA 凭证,声称这是“对账户安全的持续承诺”的一部分,并且他们要求所有用户都这样做。
钓鱼邮件中写道:“我们的记录显示,自您上次更新 12FA 以来已经过去了 2 个多月”,并补充说,“从 2 年 10 月 2025 日起,XNUMXFA 凭证过期的用户将被暂时锁定,以防止未经授权的访问。”
此 相同的电子邮件 也曾被使用 针对其他软件包维护者和开发者。
鉴于受影响软件包的广泛使用,如果 尚未处理 这么快。
正如合气道保安公司的查理·埃里克森所说 在报告中指出,无数网站避免了这次攻击造成的非常严重的损害,其中 npm 包包含一段可以在网站客户端上执行的代码。
他在攻击分析中指出:“这种恶意软件本质上是一个基于浏览器的拦截器,它会劫持网络流量和应用程序 API。它的危险之处在于它在多个层面运作:篡改网站上显示的内容、篡改 API 调用,以及操纵用户应用程序认为它们正在签名的内容。即使界面看起来正确,底层交易也可能 被重定向 在背景中。”
恶意代码 被设计 窃取加密货币。 攻击者扫描加密钱包地址的字符串,使那些从事加密相关应用程序的人面临风险。
该恶意软件在用户不知情的情况下悄悄地在浏览器中运行,重写钱包地址并将资金重定向到攻击者控制的账户。它直接劫持并操纵比特币网络的交易。 (BTC )以太坊 (ETH ), 索拉纳 (SOL )、电子世界争霸战 (TRX )莱特币 (LTC )以及比特币现金 (BCH ) 在受损的系统上。
为了实现这一点,恶意代码监控浏览器应用程序编程接口 喜欢 像 window.ethereum 这样的获取和钱包接口。
恶意代码“悄悄拦截浏览器中的加密和 Web3 活动,操纵钱包交互,并重写支付目的地,以便资金和批准 被重定向 到攻击者控制的账户,而用户没有任何明显的迹象,”埃里克森说。
一旦完成,恶意软件就会掩盖其踪迹,同时仍在后台捕获毫无戒心的受害者网络上的任何未来交易。
鉴于此次攻击的严重性,硬件钱包提供商 Ledger 的首席技术官 Charles Guillemet 警告加密货币用户在确认链上交易时务必谨慎。他指出,受影响的软件包 帖子中注明,下载量已超过1亿次。
他与社区分享了大规模供应链攻击的情况, 正在瞄准 加密软件钱包 这个 恶意负载“悄悄地交换加密地址以窃取资金”。
如果您使用硬件钱包,请在签名前仔细检查每笔交易,这样您就安全了。如果您不使用硬件钱包,请暂时不要进行任何链上交易。
– 吉耶梅
与此同时,加密分析平台 DefiLlama 的匿名创始人 0xngmi 也加入了 X, 分享 “有效影响区域比‘所有网站’小得多”,因为只有那些项目才可能面临风险 已更新 后 受恶意软件感染的 npm 软件包已发布。不过,“在疫情平息、相关部门清理出问题之前,避免使用加密网站才是更安全的做法,”他补充道。
最终,黑客在如此大规模的供应链攻击中只窃取了价值 50 美元的加密货币。这 50 美元包括以太币以及 Brett、Andy 等一系列 meme 币。

然而,这更多的是运气,因为加密情报平台 Security Alliance 在 X 上注明:
“情况本来可能会更糟。一个针对开发者机器、以持久性为重点的隐秘部署后门,可能会在无人察觉的情况下潜伏多久,谁知道呢。”
自那时以来, 许多 加密应用 如 AAVE, Uniswap, 莱杰, 木星, MetaMask, Phantom, 爆破,其他网站也已通知其受众,他们不会受到 npm 攻击。
虽然这次攻击失败了,但它给开发者们敲响了警钟:为了获得最高程度的安全,他们必须超越自己的代码库。即使是那些值得信赖且广泛使用的软件依赖项,也可能 被妥协 在任何时间。
在这里,像 GitHub 和 npm 这样的编码平台也需要做更多工作来确保广泛使用的软件包的安全。
“更受欢迎的软件包应该需要证明它们来自可信的来源,而不是随机地从互联网上的某个位置获得。”
– 埃里克森

毕竟,代码库的泄露对于开发人员来说可能是极其灾难性的,他们最终可能会因为这样的事件而完全放弃整个项目。
此次事件凸显了当今软件生态系统的互联互通程度和易受攻击程度。一个被盗账户就能为攻击者提供巨大的攻击范围,因此在开发过程的每个环节实施更完善的供应链安全措施至关重要。
防范快速增长的恶意软件威胁
随着恶意软件威胁的增加和 这个 攻击变得更加先进和有针对性, 重要 供用户 be 教育 以及 一直是 在所有平台上保持警惕。
恶意软件实际上是最常见的网络攻击类型之一。 在这里,攻击者开发软件代码或计算机程序,意图在受害者不知情的情况下获取或损坏受害者的计算机 已被攻陷.
每年,全球范围内,各种设备和操作系统都会遭遇数十亿起恶意软件攻击。网络犯罪分子利用恶意软件不仅劫持设备,甚至危及整个企业网络。
通过未经授权访问受害者的设备,攻击者窃取数字资产和敏感数据,包括登录凭据、信用卡号和 其他有价值的信息。 由于公司持有大量个人数据,黑客可以利用这些数据勒索巨额资金,因此恶意软件攻击越来越多地针对企业。
数据显示 大多数(59%)的组织都遭受过此类攻击 2024年。即使是规模较小的公司也并不安全,去年有47%的公司遭受了勒索软件的攻击。与此同时,平均赎金金额在此期间飙升了500%,达到2万美元。
恶意软件攻击后的平均恢复成本也高达 2.73 万美元。 互联网目前面临的最大威胁之一是恶意软件,它可以采取各种 其唯一目的是损害计算机系统及其用户。
病毒、勒索软件、木马、蠕虫、间谍软件、广告软件和加密劫持都是不同类型的恶意软件。所有这些 是设计的 未经授权访问网络或损坏计算机系统。
当谈到攻击的根本原因时, 最大 其中,攻击者利用漏洞(占 32%),其次是凭证泄露(29%),然后是恶意电子邮件(23%)。
现在, 只是 我们怎样才能防止自己遭受这种始终存在的威胁呢? 第一步也是最简单的一步是始终保持您的计算机和软件为最新版本。 也, 关键是你不能 在网上随意点击任何东西。尤其作为一名加密货币用户,必须对链接保持警惕,绝对不要下载任何你不确定的东西。
任何电子邮件附件也一样。请谨慎打开可疑电子邮件,并尽量减少文件共享。 在您的设备上安装防病毒软件是明智之举。
尽管不可避免的是,组织也可以通过加强防御来防范恶意软件攻击。 最直接的方法是使用强密码、多因素身份验证和 VPN,个人也可以使用这些方法来更有效地保护自己.
组织需要持续监控设备,发现可疑活动迹象,评估任何漏洞,并执行渗透测试。同时,将敏感数据备份到与网络断开连接的驱动器上,将有助于从恶意软件攻击中恢复。
员工需要 受训 至 现场 此类攻击 更好 制定事件响应计划并知道联系谁,从而快速做出反应 上 怀疑存在恶意软件威胁。
通过利用零信任网络架构,公司可以确保任何人都无法访问不该访问的数据或资产。在零信任架构下,用户永远不会被信任,并且始终需要验证。
在当今高度数字化的 生活,这些做法可以帮助 一种 维护 自己 应对日益互联互通的世界所带来的危险。
在保护自己免受恶意软件攻击方面,一般的恶意软件安全建议也适用于 npm 攻击,但是 当然,由于生态系统的开放性、小包的大量重用以及庞大的依赖树,使其特别脆弱,因此还应该采取额外的、具体的预防措施。
为了保护自己免受这种严重威胁,在安装软件包之前,务必仔细检查其可靠性。验证软件包的完整性可以确保依赖关系树未被篡改。
在寻找非法迹象时,除了包裹的来源和所有权之外,还要检查 对维护者所做的任何更改。 您 五月 还 要 研究一下包裹的作用以及对包裹的需求。
使用安全工具持续监控新威胁并提供可行的建议来缓解局势。 可以运行 npm 审计检查 检查项目依赖项中已知的漏洞。同时,在部署前实施自动安全扫描,将确保只有经过审核和批准的代码才能投入生产。
现在,为了保护自己免受最新的恶意软件攻击,您需要通过 package.json 中的覆盖功能将受影响的软件包固定到最安全的版本。
运行 npm audit 或使用软件组合分析 (SCA) 工具检查依赖关系树中受影响的版本。通过检查构建日志、开发者环境和出站流量中的可疑活动,监控任何入侵指标 (IoC)。
最后的想法:强化开源依赖关系
互联网上的威胁不断增加,并且变得更加复杂。
通过 攻击者 转折点 新的攻击媒介和 瞄准 资源不足的项目,对于开发人员、企业和用户来说,至关重要的是不要等待威胁 出现 before 演戏,但是 采取 积极措施 因为一个 薄弱环节可以 记录下来 整个系统。
通过了解新出现的威胁并持续审核软件供应链 以及 监控威胁,我们才能真正保护自己免受不断演变的网络风险。










