返回首页

GlassWorm Supply Chain Attack: 433 Components Infected with Invisible Unicode Payloads and Solana C2

GlassWorm供应链攻击深度分析:433个组件被感染,隐形Unicode载荷+Solana区块链C2

hero

2026年3月,安全研究人员追踪到史上最大规模的开发者工具链蠕虫攻击之一——GlassWorm。该攻击在16天内感染了和VSCode/OpenVSX三大生态系统的433个组件,使用不可见Unicode字符隐藏恶意载荷,并通过Solana区块链交易作为命令控制(C2)通信通道。

攻击时间线与规模

GlassWorm攻击活动可以追溯到2025年10月的首次发现,但2026年3月的第四波攻击是迄今规模最大、最复杂的一次。根据Aikido、Socket、Step 和OpenSourceMalware社区的联合分析:

时间节点 事件
2025年10月 GlassWorm首次被发现,影响约72个VSCode扩展
2026年3月3-9日 GitHub上至少151个仓库被入侵
2026年3月11日 npm生态系统确认2个包被注入Unicode恶意载荷
2026年3月18日 累计确认433个受影响组件
2026年3月20日 各安全厂商发布联合分析报告

受影响的生态系统分布:

生态系统 受影响数量 入侵方式
GitHub仓库 151+ 被盗token强制推送恶意代码
Open VSX扩展 72+ 扩展包被篡改
npm包 2+ Unicode注入(更多可能未被发现)

值得注意的被入侵项目包括Wasmer、Reworm,以及anomalyco组织(OpenCode和SST的开发商)的opencode-bench项目。攻击者使用被盗的GitHub token对仓库进行强制推送(force-push),将恶意代码注入到合法项目中。

隐形Unicode载荷技术

section

GlassWorm最显著的特征是使用不可见的PUA(Private Use Area)Unicode字符来隐藏恶意载荷。攻击者将恶意代码编码到以下Unicode范围内:

  • U+FE00-U+FE0F:变体选择符(Variation Selectors)
  • U+E0100-U+E01EF:变体选择符补充

这些字符在所有主流代码编辑器、终端和代码审查界面中渲染为完全不可见——肉眼无法通过代码审查发现注入的恶意代码。一旦解码后的payload被传入JavaScript的eval()函数,恶意代码就会执行。

// 概念演示(简化版,非实际恶意代码)
// 攻击者在合法代码的注释或字符串中插入不可见Unicode字符
const config = {
  name: "legitimate-package\uFE00\uFE01\uE0100\uE0101",  // 不可见字符隐藏在此
  // 实际恶意payload经过混淆后嵌入变体选择符中
};

// 解码后通过eval执行
// eval(decodeInvisibleChars(config.name));

多阶段攻击链分析

section

GlassWorm的攻击链包含多个精心设计的阶段:

第一阶段:初始感染 攻击者通过被盗的GitHub token或npm凭据,将不可见Unicode载荷注入到合法的代码仓库或包中。

第二阶段:载荷解码与执行 当开发者安装被感染的包或克隆被入侵的仓库时,隐藏的Unicode字符被解码并传入eval()函数执行。

第三阶段:部署 恶意代码部署一个多阶段远程访问木马(RAT),该RAT具有以下能力:

  • 键盘记录(Keylogging)
  • Cookie窃取
  • 数据外泄
  • 强制安装恶意扩展

第四阶段:C2通信 与传统的HTTP/HTTPS C2不同,GlassWorm使用Solana区块链交易作为Dead Drop解析器。攻击者的C2指令嵌入在Solana交易的memo字段中,这种技术有以下优势:

  • 区块链交易不可篡改、不可删除
  • 流量混入正常的区块链活动,难以被网络层检测
  • C2基础设施是去中心化的,没有单点故障

检测与排查方法

section

# 1. 检查npm包中是否包含不可见Unicode字符
# 安装依赖后检查node_modules
find node_modules -name "*.js" -exec grep -Pl '[\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}]' {} \;

# 2. 使用Aikido安全扫描工具
npx @aikido-/safe-chain scan

# 3. 检查VSCode扩展来源
code --list-extensions | while read ext; do
  echo "=== $ext ==="
  code --install-extension "$ext" --force 2>&1 | head -5
done

# 4. 检查GitHub仓库最近的force-push记录
git reflog --all | grep "reset:" | head -20

# 5. Python依赖检查
pip audit 2>/dev/null || pip install pip-audit && pip-audit

# 6. 使用Socket安全扫描
npx socket npm ls 2>/dev/null || echo "Install @socketsecurity/cli"

开发者防御建议

section

防御措施 优先级 实施方式
锁定依赖版本 使用lockfile,禁止自动升级
审计新依赖 安装前检查包的发布历史、维护者信誉
启用2FA 所有npm/GitHub账号启用硬件密钥2FA
代码签名 对发布的包进行GPG签名
Unicode检测 中添加Unicode字符扫描
最小权限Token GitHub PAT限制最小必要权限
依赖扫描 集成Socket、Snyk等供应链安全工具
# 在CI/CD管道中添加Unicode检测步骤
# .github/workflows/security.yml
name: Unicode Security Scan
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@
      - name: Check for invisible Unicode
        run: |
          if grep -rP '[\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}]' --include="*.{js,ts,py,json}" .; then
            echo ": Invisible Unicode characters detected!"
            exit 1
          fi

供应链攻击趋势分析

GlassWorm是2026年供应链攻击浪潮中的标志性事件。同期发生的其他重大供应链攻击包括:

攻击事件 时间 影响规模 攻击手法
GlassWorm 2026年3月 433个组件 Unicode隐形载荷+Solana C2
Axios npm投毒 2026年3月 8300万周下载量受影响 维护者账号被盗
Trivy蠕虫 2026年3月 安全扫描器本身被武器化 依赖链感染
Red Hat npm 2026年 32个官方包 7周凭据泄露链
Mini Shai-Hulud 2026年5月 170+ npm包 协调性跨生态系统攻击

这些攻击呈现出明确的趋势:攻击者从针对单一包的投毒,进化到跨生态系统、自我传播的蠕虫式攻击。开发者工具链正在成为攻击者的首选目标——因为感染一个开发者工具可以级联影响成千上万的下游项目。

数据来源与参考文献

  1. Aikido Security. "GlassWorm: Fourth Wave ." aikido.dev, 2026-03.
  2. Socket Security. "GlassWorm Supply Chain Campaign." socket.dev, 2026-03.
  3. ProbablyPwned. "GlassWorm Supply Chain Attack Surges to 433 Compromised Components." probablypwned.com, 2026-03-20.
  4. Lifeboat Foundation. "GlassWorm Hits 400+ Code Repos." lifeboat.com, 2026-03-18.
  5. Security Alliance. "GlassWorm Returns: Developer Toolchain Worm." labs.cloudsecurityalliance.org, 2026-03.
  6. Step Security & OpenSourceMalware Community. Joint analysis report, 2026-03.

更新时间: 2026-06-27

评论