Skip to content

NPM 供应链攻击是对加密用户的警示

2025年秋,一次重大NPM供应链攻击暴露了现代软件依赖关系的脆弱性——尤其对加密货币用户和开发者而言。

此次攻击针对JavaScript生态系统,数百万网页和软件项目依赖第三方包。一些恶意包被设计用来干扰加密货币交易,包括监控或替换浏览器中钱包地址的流程。后来被称为Shai-Hulud的蠕虫式行动更进一步,窃取开发者和CI/CD凭证,并通过被攻破的包维护者账户传播。

事件的直接影响已过去,但风险仍在。随着AI辅助编码和自动化漏洞发现的加速,攻击者可以比以往更快地扫描、武器化和滥用软件供应链的弱点。

并非所有加密钱包都受到影响。特别是一些比特币相关的钱包,包括Nunchuk和Blockstream(Jade硬件钱包),公开声明其应用未受到此次特定NPM攻击的影响。

一个可能的启示是,行业长期以来在安全与功能丰富性之间的权衡,可能变得越来越相关。优先考虑安全强化而非支持尽可能多资产、集成和软件依赖的钱包,通常操作更简单,攻击面更小。

随着AI在软件开发和漏洞发现方面的双向加速,简化系统可能会逐渐成为用户、开发者和服务提供商最有效的安全策略之一。

发生了什么?

2025年秋,一系列供应链漏洞影响了JavaScript生态系统及其包注册中心NPM。攻击者获得可信包维护者账户的访问权限,发布了恶意更新,影响了数千个应用程序使用的软件库。

一旦安装,这些被攻破的包可以执行多种恶意操作,包括窃取凭证、危害开发环境或操控加密货币相关交易。

这些事件尤为令人担忧的几个特征:

  • 流行的NPM包每周下载量常常达到数百万次。
  • 现代应用依赖数百甚至数千个第三方库。
  • 单一可信依赖的被攻破可以迅速在庞大的软件生态系统中传播。
  • 一些恶意包专门针对加密货币用户,试图修改钱包地址或交易数据。

教训很简单:复杂性有安全成本。每增加一个依赖、集成或功能,都是一段需要信任、维护和防御的代码。

随着攻击者越来越多地利用自动化和AI辅助工具,保持系统简单可能会成为钱包提供商或加密服务最强的安全优势之一。

为什么JavaScript生态系统如此具有吸引力?

现代JavaScript开发高度依赖NPM,这是许多网页应用、开发者工具和软件项目使用的包注册中心。

一个应用程序可能依赖:

  • 数百个直接依赖包
  • 数千个间接依赖

许多开发者并不清楚其应用最终加载的每个库。在较弱的工程环境中,有些人可能直到出现问题才在意。

这带来了三大风险:

  • 过多依赖难以逐一审查:依赖树通常过于庞大,难以逐行审查。
  • 声誉信任:流行包常被假设安全,因为“大家都在用”。
  • 自动化构建管道:如果依赖未被固定版本、审查或监控,CI/CD系统可能快速引入被攻破的包。

这也是为何NPM供应链攻击如此危险。攻击者无需直接攻破每个目标。

攻破一个可信包即可影响许多下游项目。

被攻破的包。影响数千个下游应用
被攻破的包。影响数千个下游应用

为什么这是一种如此危险的威胁?

用户可以做得一切正确——仍然可能暴露

大多数网络攻击都需要受害者犯错。点击恶意链接。安装感染软件。访问假网站。

供应链攻击则不同。

用户即使遵循所有推荐的安全措施,也可能因为应用程序无意中加载了来自可信来源的被攻破代码而暴露。

信任成为攻击载体

传统安全模型假设从官方渠道下载的软件比其他途径获得的软件更可信。

供应链攻击正是利用了这一假设。

恶意代码通过合法的更新机制、可信的包仓库和开发者日常使用的软件组件到达用户手中。

检测困难

被攻破的包常常看似合法:

  • 它们从官方仓库下载。
  • 可能由可信维护者签名或发布。
  • 恶意代码常被隐藏、加密或混淆。
  • 受影响的软件可能仍正常运行。

因此,攻击可能长时间未被发现,直到影响大量用户和系统。

影响超出单一应用

当广泛使用的依赖被攻破,影响可能远远超出最初目标。

一个恶意包最终可能影响:

  • 网站
  • 浏览器扩展
  • 钱包应用
  • 开发者工具
  • 内部企业系统
  • 后端服务与API

这使得供应链攻击成为一种系统性风险,而非孤立的安全事件。

被攻破的包如何影响加密用户?

  1. 应用加载了被攻破的依赖

可信的NPM包收到恶意更新,成为应用软件堆栈的一部分。

  1. 恶意代码在可信应用中执行

由于代码由应用本身加载,继承了与其他软件相同的权限和信任。

  1. 交易数据可能被监控或篡改

一些恶意包被设计用来监控加密货币交易,并在特定情况下尝试用攻击者控制的地址替换钱包地址。

  1. 用户批准交易

如果操控未被察觉且交易被批准,资金可能会被转入攻击者控制的地址,而非预期收款人。

  1. 在可信屏幕上验证打破攻击

在硬件钱包屏幕上验证目标地址的用户,有机会在批准交易前发现操控。

为什么硬件钱包验证仍然重要

此次事件引起加密社区关注的一个原因是,一些恶意包试图修改在电脑屏幕上显示的交易数据。

这正是硬件钱包设计用来缓解的威胁类型。

硬件钱包提供独立验证屏幕

  • 私钥留在设备内部。
  • 交易必须在硬件钱包上确认。
  • 目标地址可以在独立可信屏幕上验证。

即使电脑、浏览器或钱包应用被攻破,硬件钱包仍能显示即将签名的实际交易详情。

剩余风险在于人为行为

硬件钱包只能保护用户验证的内容。如果设备显示攻击者控制的地址且用户未核对即批准,保护机制实际上已被绕过。

软件钱包面临更大暴露风险

软件钱包通常在与浏览器、操作系统和可能受影响的应用代码相同的联网设备上运行。

在许多情况下,钱包界面和负责构建或显示交易详情的代码共享相同的信任边界。

这并不意味着所有软件钱包都不安全。但没有独立验证屏幕,用户更难发现交易操控。

这尤其适用于基于浏览器的钱包、Web3应用和复杂的智能合约交互,用户常常需要信任应用界面显示的内容。

如何降低供应链攻击的风险

供应链攻击并非总能由终端用户避免。但用户仍可限制损失,假设任何联网设备或钱包界面最终都可能被暴露——尤其在AI辅助威胁行为者能以前所未有的速度发现、武器化和利用漏洞的时代。

构建坚固防御以遏制装备精良的攻击者——Blockstream Jade是入门级设备,能帮你省去许多麻烦
构建坚固防御以遏制装备精良的攻击者——Blockstream Jade是入门级设备,能帮你省去许多麻烦

将热钱包视为可牺牲品

任何连接互联网的设备都应被视为潜在被攻破的风险。

这并不意味着你不应使用移动钱包、浏览器扩展或桌面应用。它们是有用的工具,但应仅用于日常交易和便利,不应作为存放大量资金的长期保险箱。

将便利与安全区分开

最有效的防御仍是将交易确认与联网设备分离。

像Blockstream Jade和Coldcard这样的硬件钱包,正是围绕这一原则设计。即使电脑、浏览器或钱包应用被攻破,用户仍有机会在独立设备上验证交易细节后再确认。

验证你所签署的内容

最终,安全设备无法取代用户的注意力。

硬件钱包只能保护用户实际验证的内容。如果攻击者控制的地址出现在设备屏幕上且未经核对即批准,保护机制实际上已被绕过。

仔细检查你的交易

交易操控恶意软件最危险的方面之一是,它可以在不改变实际发生内容的情况下,篡改你在电脑屏幕上看到的内容。

在批准任何交易之前:

  • 验证钱包屏幕上的地址:如果使用硬件钱包,务必将设备显示的目标地址与您打算转账的地址进行比对。
  • 检查首尾字符之外的内容:复杂的攻击者可以生成看似符合目标地址的地址,包括匹配前后几位字符。快速视觉扫描通常不足以识别。应检查地址的开头、中间和结尾,确保无误后再批准。
  • 对大额转账使用第二验证渠道:对于重要金额,建议通过不同的沟通渠道,向收款人确认目标地址,确保无误后再转账。

花几秒钟核查交易细节,可能避免一场无法挽回的巨大损失。

自我保管与多签辅助托管

自我保管适合了解风险、愿意投入时间(“工作量证明”)并能建立有纪律的设置的个人。这是最高级的自主主权方案,也是我们推荐的首选,适合能正确管理的用户。

但我们也知道,并非每个人都有时间、自信或网络安全技能来独立操作——尤其当涉及的资产可能是毕生积蓄的重要部分时。

应避免的错误必须避免。

对于较大个人持有、家庭资金或企业金库,多签方案可以通过在多个设备、地点或个人之间分散授权,消除单点故障。许多有经验的用户自行构建和管理此类系统,但也有人希望在设置或日常操作中获得指导支持。

对于希望获得专业指导的更大规模个人资产,我们的内部咨询团队已准备好帮助你建立坚韧的系统,避免常见陷阱。

我们公司在行业中已运营十余年。期间,我们见证并幸存了所有: “猪肉屠宰”投资骗局、国家资助的威胁行为者、误放的备份、钓鱼攻击、丢失的密钥、被攻破的设备以及日益复杂的网络犯罪。我们相信,这份生存记录本身就是一种声明。

如今,我们还与专业的网络威胁和干预合作伙伴密切合作,处理涉及被盗或处于风险中的数字资产案件,同时持续监控行业边缘的新兴攻击模式。

虽然凭借比特币的无许可特性,完全可以自主构建此类系统,但对于某些个人资产、家庭资金和企业金库,采用协助多签设置可能更为适合。

目标是尽量减少可避免的风险,消除单点故障。

一个粗心的错误、一台被攻破的设备或一台被攻陷的电脑,不应成为失去世代财富的原因。 

结论

NPM事件终将淡出记忆,但教训不应如此。

几十年来,用户被教导避免可疑下载、假冒网站和明显的骗局。供应链攻击之所以危险,是因为它们绕过了明显的警示信号。软件可能是合法的,来源可能是官方的,开发者本人也可能是受害者。

在日益复杂的软件世界中,安全已不再仅仅是躲避坏人。它关乎减少不必要的信任、降低复杂性和独立验证关键操作。

在比特币中,“不信任,验证”同样适用于软件。