13 个 npm 包,48 秒,一个虚假钱包 SDK
一场针对 npm 注册表的协同攻击在短短 48 秒内投放了 13 个仿冒 Coinbase 风格的钱包 SDK 包,展示了恶意代码伪装成受信任工具的速度有多快。仅凭熟悉的名字就安装包的开发者,可能会在不知情的情况下将虚假 SDK 注入到他们的应用中。
这些包出现在 2026 年 9 月 7 日 UTC 时间 04:54:59 至 04:55:48 之间。像 cb-wallet-http 和 scw-core 这样的名称模仿了官方的 @coinbase/wallet-sdk 命名空间。攻击者并没有采用拼写错误攻击(typo-squatting),而是通过在名称前加上熟悉的字符串,希望通过同事的推荐或论坛帖子来让用户相信其合法性。
所有 13 个版本都具有相同的骨架配置:版本号为 0.0.1-security,维护者列表为空,且显示的是发布后立即生成的默认 npm 元数据。这种完全一致的设置表明,这些包是由单个脚本批量生成的,这是自动化而非人工操作的典型特征。
npm 的开放发布模式允许任何人无需事先审核即可上传包,从而导致了此类攻击。过去的供应链事件表明,一旦恶意代码进入依赖树,它就会在每一个安装它的机器上运行。
NPM 尚未确定犯罪嫌疑人,也未解释代码是如何在初始上传之外传播的。目前尚不清楚攻击者的目标是专门针对 Coinbase 用户,还是仅仅用看起来合理的名称充斥注册表,寄希望于其中一些会被采用。
开发者现在可以做什么
- 在添加包之前检查其发布者;官方 SDK 通常位于经过验证的组织作用域(organization scopes)下。
- 运行能够扫描依赖项中已知恶意特征的工具。
- 在 lockfiles 中锁定确切版本,避免在未经审查的情况下拉取新发布的包。
- 优先选择要求维护者进行双重身份验证(2FA)的注册表。
值得关注的事项
- npm 是否会加强对模仿知名品牌包的审核。
- 标记冒充名称的社区驱动黑名单。
- 安全研究人员关于这 13 个虚假 SDK 是否存在活跃漏洞利用的更新。
这起事件证明,听起来熟悉的名字并不能保证安全。在开源生态系统中,警惕和验证仍然是防御供应链攻击最强有力的手段。
