如果你是一名重度依赖命令行操作的开发者,现在立刻检查你的终端。就在昨天,Socket.dev 的研究人员发布了一份令人震惊的报告,证实开源密码管理器巨头 Bitwarden 的官方 CLI 工具遭到供应链攻击。
这次受影响的对象是发布在 npm 注册表上的 @bitwarden/cli 软件包,具体版本号为 2026.4.0。这已经不是简单的“克隆包”投毒,而是攻击者直接入侵了 Bitwarden 的 CI/CD 管道,通过滥用 GitHub Action 自动化流程,在合法的发布版本中硬生生地塞进了恶意逻辑。
攻击链路拆解:CI/CD 是如何崩掉的?
从第一性原理来看,供应链安全最薄弱的环节往往不是代码本身,而是代码变成产品的过程。
根据 Socket.dev 的取证分析,攻击者成功控制了 Bitwarden 仓库中的 GitHub Action 脚本。在版本构建阶段,脚本会自动下载并执行一个名为 bw1.js 的恶意文件。由于这个过程发生在受信任的官方管道内,最终生成的 npm 安装包带有合法的结构,极具迷惑性。
这个 bw1.js 并不是瞎写的,它与最近臭名昭著的 Checkmarx 供应链攻击活动 共享了完全相同的 C2(命令与控制)端点和有效载荷结构。这意味着,这极可能是一场有预谋、有组织的大规模渗透行动的一部分。
恶意行为:精准收割开发者资产
这个后门的胃口非常大。一旦你在本地运行了受污染的 Bitwarden CLI,恶意脚本会立即扫描并窃取以下高价值敏感信息:
- GitHub 个人访问令牌(PAT):这通常意味着攻击者可以进一步渗透你的私有仓库。
- 云服务凭证:包括 AWS、Azure 及 Google Cloud 的访问密钥。
- npm 配置文件(.npmrc):通过窃取授权令牌,攻击者可以将你的账号变成下一个传播恶意包的“跳板”。
更绝的是,这些数据并不是通过常规的 HTTP 请求发送到可疑域名,而是通过滥用 GitHub API 和 npm 注册表本身的合法接口 进行外泄。这种利用合法基础设施进行数据回传的手法,让大多数基于流量特征的防火墙完全失灵。
诡异的“俄罗斯自毁开关”
在对 bw1.js 进行逆向工程时,研究人员发现了一个非常有趣的细节:恶意代码包含一个针对俄罗斯区域设置(Locale)的判断。如果检测到目标机器的系统语言或地理位置属于俄罗斯,脚本会触发“自毁开关”停止运行。
这种带有明显政治倾向或地域规避的行为,在当前的国际网络战背景下并不罕见,但也为追踪攻击者背景提供了微妙的线索。此外,代码中还充斥着大量反机器人、反沙箱的逻辑,显然是针对专业安全分析人员做过专门的对抗优化。
用户应该立即采取的操作
如果你在过去 48 小时内更新或安装了 Bitwarden CLI,请务必执行以下步骤:
- 强制删除受影响版本:使用
npm uninstall -g @bitwarden/cli彻底移除。 - 轮换所有凭证:如果你在受影响的机器上操作过 GitHub、AWS 或 npm,请立即更换密码并重置所有访问令牌。不要抱有侥幸心理,一旦令牌泄露,后门随时可能再次开启。
- 审计日志:检查你的 GitHub 组织和云服务账号是否有异常的访问记录或 API 调用。
密码管理器本应是安全防线的最后一道堡垒,但当它的管理工具本身成为攻击载体时,这种讽刺提醒我们:没有任何工具是绝对可信的。
本报道由 圈小蛙(qxwa.com) 科技资讯站特约撰稿。🐸️
圈小蛙