返回更新列表
新发布Aug 17, 2026

glassworm-hunter v1.0.4

通过扫描 VS Code 扩展、npm/PyPI 包和 Git 仓库中的不可见 Unicode 载荷、解码器模式、C2 标记以及已知恶意 IOC,检测 GlassWorm 供应链攻击载荷。

分享

glassworm-hunter

Glassworm Hunter Logo

在你的机器上检测GlassWorm供应链攻击载荷。扫描VS Code扩展、npm包、Python包和git仓库。

该扫描器检测攻击技术本身——不可见的Unicode变体选择器载荷、GlassWorm解码器模式、C2指示器和凭据窃取代码。

安装

pip install glassworm-hunter

或者使用pipx:

pipx install glassworm-hunter

快速开始

扫描当前目录,但不扫描VS Code/Cursor扩展:

glassworm-hunter scan --no-extensions

扫描特定项目:

glassworm-hunter scan /path/to/project

它检测什么

技术检测(捕获未知变体)

  • 不可见的Unicode载荷 - 用于编码隐藏代码的变体选择器字符(U+FE00-FE0F, U+E0100-E01EF)。合法使用是1-2个字符用于表情符号。GlassWorm使用了数千个。
  • GlassWorm解码器模式 - 解码不可见载荷的codePointAt + 变体选择器范围算法
  • 双向覆盖字符 - Trojan Source攻击(CVE-2021-42574)
  • 韩文填充符 - 不可见的有效JavaScript标识符(U+3164)
  • eval/Function与动态内容 - 由解码字符串提供的执行槽
  • 凭据访问 - 读取.npmrc、.gitcredentials、SSH密钥、令牌环境变量的代码
  • C2通信模式 - Solana RPC调用、Google Calendar网址、WebRTC数据通道出现在意外上下文中

已知IOC匹配(补充)

  • 21个已知恶意VS Code/OpenVSX扩展ID(所有5波)
  • 4个已知恶意npm包
  • 14个已知C2 IP地址
  • 3个已知Solana C2钱包地址
  • 攻击者电子邮件和构建路径工件

严重级别

级别含义
CRITICAL检测到活跃的GlassWorm载荷(代码中的不可见Unicode簇,解码器模式)
HIGH匹配到已知恶意IOC(C2 IP、钱包、扩展依赖已知恶意软件)
MEDIUM值得审查的可疑模式(eval+动态内容、凭据访问、Trojan Source)
LOW信息性(异常的零宽度字符密度,可疑的安装脚本)

CLI选项

glassworm-hunter scan [OPTIONS] [PATHS...]
选项默认值描述
--extensions / --no-extensionson扫描VS Code/Cursor/Codium扩展
--npm-scan / --no-npm-scanon扫描node_modules
--pip-scan / --no-pip-scanoff扫描Python site-packages
--git / --no-giton扫描git仓库
--format [console|json|sarif]console输出格式
--output FILEstdout将报告写入文件
--severity [critical|high|medium|low]low报告的最低严重级别
--max-file-size SIZE10MB跳过大于此的文件
--include-hiddenoff扫描隐藏文件/目录
--quietoff抑制进度输出
--verboseoff显示每个正在扫描的文件
--exclude PATTERN要排除的Glob模式(可重复)
--disable-rule RULE_ID抑制特定检测规则(可重复)
--ioc-file FILE从JSON文件加载额外的IoC指示器

扫描期间会在stderr上显示Rich进度条。使用--quiet--verbose时会自动抑制。扫描完成后,始终会在stderr上打印一行摘要(扫描的文件、发现项、输出路径)。

其他命令

# List all detection rule IDs (for use with --disable-rule)
glassworm-hunter rules

# Update local IoC database from GitHub (default source:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update

# Update from a custom source (e.g. internal threat intelligence server)
glassworm-hunter update --source https://internal.corp/ioc.json

# Force overwrite existing local IoC database
glassworm-hunter update --force

# Print version
glassworm-hunter version

退出代码

代码含义
0无发现
1发现检测到
2扫描器错误

如果发现了什么

  1. 不要惊慌。 扫描器找到了一个指示器,而不是已确认的入侵。某些检测可能是误报,我们的团队正在持续努力减少误报并提高检测准确性。
  2. 不要执行标记的代码。 在解决之前,不要运行、构建或测试受影响的项目。
  3. 严重发现: 立即卸载扩展/包。轮换你机器上的NPM令牌、GitHub令牌、SSH密钥以及任何其他凭据。
  4. 高发现: 调查标记的文件。如果它位于你未明确安装的依赖中,将其移除。
  5. 中发现: 审查代码。这些模式可疑,但在某些上下文中可能是合法的。

CI/CD集成

用于自动化处理的JSON输出:

glassworm-hunter scan . --format json --output report.json --no-extensions

用于GitHub代码扫描的SARIF:

glassworm-hunter scan . --format sarif --output results.sarif --no-extensions

将SARIF上传到GitHub:

- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

在CI中使用退出代码:

glassworm-hunter scan . --severity critical --no-extensions || exit 1

排除构建工件和供应商代码:

glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions

无网络访问

该扫描器默认完全离线。仅读取本地文件。无遥测、无回拨、无自动更新检查。IoC数据库已捆绑在包中。

唯一发出网络请求的命令是glassworm-hunter update,它从GitHub(或自定义的--source URL)获取最新的IoC数据库。永远不会自动调用。

配置文件

在项目根目录放置一个.glassworm.yml来设置默认值:

exclude:
  - "*.min.js"
  - "vendor/**"
  - "dist/**"

disable_rules:
  - zero-width-chars

severity: medium

CLI标志会覆盖配置文件的值。

自定义IoC文件

使用--ioc-file从JSON文件加载额外的指示器。这对于团队特定或内部威胁情报很有用:

glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json

文件必须遵循与data/ioc.json相同的模式:

{
  "schema_version": "1.0",
  "extensions": [{"id": "publisher.name"}],
  "npm_packages": [{"name": "pkg", "malicious_versions": "1.0.0"}],
  "c2_ips": [{"ip": "1.2.3.4"}],
  "c2_wallets": [{"address": "..."}],
  "attacker_artifacts": [{"type": "email", "value": "[email protected]"}]
}

自定义文件会合并到所有其他IoC层之上(硬编码 → 捆绑 → 用户~/.glassworm/ioc.json--ioc-file)。

IoC数据库层

扫描器使用3+1层IoC系统(每一层会合并到上一层之上,从不移除):

  1. 硬编码 — 内置于Python源码中,始终可用
  2. 捆绑 — 随包分发的data/ioc.json
  3. 用户~/.glassworm/ioc.json,通过glassworm-hunter update更新
  4. 自定义--ioc-file标志,最高优先级

致谢

Windows

扫描器可在Windows上运行。除非以提升的(管理员)命令提示符运行,否则有4项测试会失败。

License

MIT

分类