GlassWorm的 Solana C2:供应链怪兽如何把区块链变成暗箱
Source: Dev.to
GlassWorm 供应链攻击概览
供应链攻击并不新鲜,但 GlassWorm 正在做我们前所未见的规模:将 Solana 区块链 本身武器化为指挥控制(C2)基础设施——使其 C2 实际上无法被关闭,同时针对在其上开发的开发者。
- 时间线: 2026 年 1 月 – 3 月
- 影响: 超过 433 个受损组件,遍布 GitHub、npm、VSCode 和 OpenVSX。
- 目标: 窃取加密钱包数据、SSH 密钥和开发者凭证。
- C2 通道: Solana 区块链上的交易备注。
GlassWorm 工作原理
- 初始妥协 – 攻击者获取 GitHub 凭证(例如通过凭证填充或令牌窃取)。
- 恶意提交 – 他们强制推送看似合法的提交(文档微调、版本升级、小重构)。
Aikido 的安全研究员怀疑使用 LLM 生成这些“掩护”提交,以匹配每个项目的编码风格。
被妥协的资产
| 类别 | 被妥协项目数量 |
|---|---|
| GitHub 上的 Python 仓库 | 200+ |
| GitHub 上的 JavaScript/TypeScript 仓库 | 151+ |
| VSCode/OpenVSX 扩展(伪装成 linter、AI 助手、格式化工具) | 72 |
| 含有恶意依赖的 npm 包 | 10+ |
VSCode 扩展滥用 – 最新一波利用 extensionPack 和 extensionDependencies 在 package.json 中。最初的干净扩展通过审查后,随后更新以拉取一个与 GlassWorm 关联的包作为依赖——在“受信任”扩展本身中无需代码更改。
隐形 Unicode 载荷
// What you see in your editor:
const config = require('./utils');
// What's actually there (invisible Unicode between quotes):
const config = require('./utils\u200B\u200B\u200B...[encoded payload]');
这些不可见的 Unicode 字符编码了一个加载器,执行时会获取并运行第二阶段脚本。
基于区块链的 C2
Instead of hard‑coding C2 server addresses (which defenders can block), GlassWorm queries a Solana wallet’s transaction memo field every 5 seconds. The C2 address is embedded as a memo in regular Solana transactions.
┌─────────────────────────────────────────────┐
│ Infected Machine │
│ │
│ 1. Query Solana RPC for wallet txns │
│ 2. Parse memo field → extract C2 URL │
│ 3. Download Node.js runtime │
│ 4. Execute JS‑based info stealer │
│ │
│ Stolen: wallet keys, SSH keys, tokens, │
│ credentials, env variables │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Solana Blockchain (C2 Infrastructure) │
│ │
│ Wallet: [attacker address] │
│ Memo: encrypted C2 URL │
│ │
│ - Immutable, uncensorable │
│ - 50+ URL rotations since Nov 2025 │
│ - New wallet addresses to evade detection │
└─────────────────────────────────────────────┘
研究发现(Step Security,2025 年 11 月 – 2026 年 3 月): 共计 50 笔 memo 交易更新了负载 URL;攻击者轮换 C2 URL 与 Solana 钱包地址以规避检测。
为什么选择 Solana?
- 低交易费用 – memo 交易的费用仅为几分之一美分。
- 高吞吐量 – 每 5 秒轮询一次在 Solana 网络上几乎不构成负担。
- 抗审查性 – 区块链交易无法被“下线”;C2 地址将在链上永久保存。
对 DeFi 开发者生态系统的影响
GlassWorm 专门针对构建 DeFi 工具的开发者:
- 被窃取的 GitHub 令牌被用于强制推送恶意更改到其他仓库。
- 如果你维护 DeFi 协议 SDK、流行的 Solidity 库或 Anchor 程序模板,你的仓库就会成为下游用户的攻击向量。
收集的数据包括:
- 加密货币钱包助记词和私钥
- 浏览器扩展钱包数据(MetaMask、Phantom 等)
- 包含 RPC 端点和部署者密钥的
.env文件 - 用于服务器访问的 SSH 密钥
对 DeFi 开发者的潜在后果:
- 国库钱包被盗
- 部署密钥被泄露
- 未经授权的合约升级
- 用户资金被窃取
由于 Solana 开发者经常查询区块链,恶意软件的 C2 流量会与合法的 RPC 调用混合,使基于网络的检测极其困难。
立即妥协指示
# Search for GlassWorm marker variable
grep -r "lzcdrtfxyqiplpd" ~/projects/
# Check for persistence file
ls -la ~/init.json
# Look for unexpected Node.js installations
ls -d ~/node-v22* 2>/dev/null
# Inspect recent Git commits for date anomalies
# (committer date much newer than author date)
git log --format="%H %ai %ci" | awk '{
split($2,a,"-"); split($5,b,"-");
if (b[1]*10000+b[2]*100+b[3] > a[1]*10000+a[2]*100+a[3]+7)
print "SUSPICIOUS: "$1
}'
防御性建议
环境加固
- 启用 GitHub Vigilant Mode – 未签名的提交将变得一目了然。
- 使用 npm audit 签名 来验证软件包来源。
- 每季度审查 VSCode 扩展 – 移除所有未主动使用的扩展。
- 切勿在开发机器的
.env文件中存储私钥或助记词。 - 对任何控制协议资金的密钥使用硬件钱包。
供应链加固
- 将所有依赖固定到确切版本,并使用完整性哈希(
npm ci+package-lock.json)。 - 采用可重现的构建和签名的制品。
- 实施自动化扫描,以检测源文件中隐藏的 Unicode 字符。
Additional Recommendations
- 使用 Socket.dev 或 Aikido 进行实时依赖扫描。
- 在 CI/CD 中实现 StepSecurity Harden‑Runner 以检测异常网络调用。
- 要求所有贡献者进行提交签名(GPG 或 SSH)。
- 将开发机器与部署基础设施分离——绝不要在安装 npm 包的机器上保留部署者密钥。
- 监控基于区块链的 C2:
# Monitor Solana wallet for suspicious memo transactions
# (useful for threat‑intelligence teams)
from solders.pubkey import Pubkey
from solana.rpc.api import Client
KNOWN_GLASSWORM_WALLETS = [
# Add known attacker wallets from threat‑intel feeds
]
client = Client("https://api.mainnet-beta.solana.com")
for wallet in KNOWN_GLASSWORM_WALLETS:
pubkey = Pubkey.from_string(wallet)
txns = client.get_signatures_for_address(pubkey)
for sig in txns.value:
tx = client.get_transaction(sig.signature)
# Parse memo instructions for C2 URLs
# Alert on new transactions
GlassWorm 不是第一个利用区块链进行 C2 通信的恶意软件,但它是规模最大、最成功的。之前的例子包括 EtherHiding(2023 年,BNB 链)以及各种基于比特币的暗网投递。
什么让 GlassWorm 与众不同?
| Property | Detail |
|---|---|
| Scale | 433+ 受损组件,跨 4 个平台,在单个月内 |
| Self‑propagation | 被盗代币会自动扩展攻击面 |
| Targeting | 专门针对使用加密/区块链的开发者 |
| Persistence | LLM 生成的掩盖提交使检测极其困难 |
这给区块链社区提出了一个令人不安的问题:如何防御利用你自己的基础设施作为武器的攻击?
答案不是限制区块链的 memo 字段——那会违背无许可系统的初衷。相反,防御必须在终端进行:
- 对所有包和扩展进行代码签名和来源追溯。
- 沙箱化的开发环境,限制已安装包的访问权限。
- 行为监控,标记开发工具发出的异常区块链 RPC 调用。
- 对任何具有真实金融风险的密钥使用硬件安全模块。
风险矩阵
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| npm/VSCode 包被妥协 | 凭证被盗,钱包被清空 | 固定依赖,验证签名,使用 Socket.dev |
| GitHub 账户被接管 | 受信任仓库中出现恶意代码 | 强制提交签名,启用双因素认证 + 警惕模式 |
| 基于 Solana 的 C2 | 不可下架的指令基础设施 | 端点检测,行为监控 |
| LLM 生成的掩护提交 | 规避代码审查 | 自动提交分析,要求 PR 审查 |
| 部署者密钥被盗 | 协议被破坏 | 硬件钱包,空气隔离部署 |
结束语
GlassWorm 表明,下一代供应链攻击不仅仅针对区块链开发者——它们将将区块链本身用作攻击基础设施。使去中心化系统具备弹性的相同特性(不可篡改、抗审查、无许可访问)也使其对攻击者具有吸引力。
最佳防御是假设你的开发环境是敌对的,并相应地构建安全层:
- 用于签名的硬件钱包。
- 用于构建的沙箱环境。
- 依赖项的已验证来源。
- 绝不要在运行
npm install的机器上保存部署者密钥。
本文是我们持续进行的 DeFi 安全研究 系列的一部分。关注我们,获取每周深入探讨智能合约漏洞、审计工具和安全最佳实践的内容。