一个 Claude Code skill,用于扫描源代码仓库中的注入恶意代码、供应链后门、混淆加载器。
本 skill 源自真实事件响应 —— 一次 EtherHiding 风格的 JS 加密货币窃取器被隐藏在 hardhat.config.ts 中(在约 200 个空格的空白填充后塞入一行 2000+ 字符的混淆代码)。完整案例见 references/incident-2026-03-25.md。
按 8 个阶段走完一次完整的恶意代码审计:
- Scope — 确定扫描范围(工作树 / git history / 单个 commit)
- Literal IoC sweep — 字面 IoC 全量 grep(CRITICAL)
- Structural pattern sweep — 混淆手法的结构化正则匹配(HIGH)
- Long-line sweep — 识别空白填充隐藏注入的长行(HIGH)
- Package lifecycle audit — 审查
package.json的preinstall/postinstall/...(MEDIUM) - Git history sanity — 查找"commit message 与改动文件不符"的可疑提交(MEDIUM)
- CI / Docker / entrypoint audit — 审查 workflow、Dockerfile、entrypoint 脚本(MEDIUM)
- Report — 按 CRITICAL/HIGH/MEDIUM/INFO 分级输出结构化报告
- Claude Code CLI 已安装
- 系统已安装
rg(ripgrep)、git、awk、base64(标准 Linux/macOS 环境通常已具备)
对当前用户下所有项目生效。
git clone <this-repo-url> ~/.claude/skills/malware-scan
chmod +x ~/.claude/skills/malware-scan/scripts/scan.sh如果是从本地目录复制而来:
mkdir -p ~/.claude/skills/malware-scan
cp -a /path/to/malware-scan/. ~/.claude/skills/malware-scan/
chmod +x ~/.claude/skills/malware-scan/scripts/scan.sh仅对某个具体项目生效(会随项目一起被 Claude Code 加载)。
mkdir -p <your-project>/.claude/skills
git clone <this-repo-url> <your-project>/.claude/skills/malware-scan
chmod +x <your-project>/.claude/skills/malware-scan/scripts/scan.sh打开一个新的 Claude Code 会话,在目标仓库下输入下面任意一句:
scan this repo for malwareaudit for backdoors帮我检查这个仓库是否被注入了恶意代码
Claude 应当自动触发 malware-scan skill 并按 8 阶段流程开始审计。你也可以在 Claude Code 中运行 /skills(或查看 skill 列表的命令)确认 malware-scan 已出现。
直接让 Claude Code 走完整流程,它会逐阶段汇报发现并在最后给出分级报告:
scan the current repo for injected malware and supply-chain backdoors
Claude 会在发现 CRITICAL 条目时提醒你:不要原地编辑,而是从干净 commit 回滚、并轮转所有可能泄露的凭据。
只运行 Phase 2–5 的快速扫描(不替代完整流程):
~/.claude/skills/malware-scan/scripts/scan.sh /path/to/repo脚本默认也会扫描被 .gitignore 隐藏的文件,并将命中内容做终端安全转义后再输出,避免恶意控制字符直接污染终端。
如果你明确只想做更窄、更快的一轮扫描,可以关闭 ignored-file 扫描:
SCAN_IGNORED=0 ~/.claude/skills/malware-scan/scripts/scan.sh /path/to/repo输出为转义后的发现清单,需要人工或让 Claude 进一步分诊。
- "audit this repo for malware / backdoors / injected code"
- "is this commit / PR / dependency safe?"
- "we think we were compromised — check the code"
- "scan for obfuscated / suspicious code"
- "review these commits from
<untrusted author>"
以及在审查涉及 *.config.{ts,js,cjs,mjs}、package.json lifecycle scripts、.github/workflows/*、Dockerfile、committed build output 的变更时,Claude 也会主动触发。
malware-scan/
├── SKILL.md # skill 主定义(Claude Code 会自动加载)
├── README.md # 本文件
├── scripts/
│ └── scan.sh # Phase 2–5 一键扫描脚本
└── references/
├── iocs.md # 字面 IoC 列表(持续更新)
├── patterns.md # 结构化正则模式
└── incident-2026-03-25.md # 驱动本 skill 产生的案例研究
- 对可疑仓库做历史审查时,不要直接运行裸
git log、git show。请沿用scripts/scan.sh中相同的 hardenedgit -c ...选项。 - 不要把解码后的 payload、原始
grep命中或git show输出直接打到终端。恶意控制字符可能伪造 UI 或污染剪贴板。 - 真实事件响应请放在容器或一次性虚机里执行,不要在带生产凭据的开发机上跑。
cd ~/.claude/skills/malware-scan && git pullrm -rf ~/.claude/skills/malware-scan发现新的攻击手法时,编辑 references/iocs.md(字面字符串)或 references/patterns.md(正则)并提交。skill 下次被触发时即生效,无需重启 Claude Code。