基于 GitHub Release/Tag 监控、Patch Diff、规则引擎、Claude Code、DeepSeek 与旧版本源码审计 的 Silent Patch 安全审计辅助平台。
SilentPatch Watcher 用于持续监控开源项目版本更新,自动获取 GitHub 版本 Diff,通过规则引擎筛选高价值安全相关变更,并调用 Claude Code / DeepSeek 对补丁进行安全审计。
当系统识别到疑似 Silent Patch 后,会进一步回到 old_ref 旧版本源码,围绕补丁修复前的逻辑做重点审计,辅助判断旧版本中是否存在真实漏洞风险。
本项目不是漏洞扫描器,不会对公网资产进行扫描、验证或利用。它只做开源代码 Diff 分析、旧版本源码审计、风险推断和本地/授权环境验证建议。
GitHub Release / Tag
↓
Compare Diff
↓
规则引擎评分
↓
Claude Code Diff 审计
↓
疑似 Silent Patch 判断
↓
Old-Version Focused Audit
↓
结构化报告 / Web Dashboard
SilentPatch Watcher 面向以下场景:
| 定位 | 说明 |
|---|---|
| Silent Patch 情报雷达 | 长期监控开源项目版本更新,发现疑似安全修复 |
| Patch Diff 安全审计工作台 | 对版本差异进行规则分级、上下文整理和 AI 辅助审计 |
| Old-Version 漏洞线索分析器 | 回到旧版本源码,围绕修复前逻辑做重点漏洞推理 |
| AI 辅助 CVE / SRC 线索系统 | 生成漏洞证据、入口、前置条件和本地验证建议 |
| 开源组件安全更新监控器 | 适合长期运行在 VPS 上做低成本安全情报采集 |
| 类别 | 能力 | 状态 |
|---|---|---|
| 📡 监控 | GitHub Release / Tag 监控 | ✅ 已完成 |
| 🔍 Diff | GitHub Compare Diff 获取 | ✅ 已完成 |
| 🎯 分级 | 规则引擎评分与高风险文件筛选 | ✅ 已完成 |
| 🤖 AI 审计 | Claude Code + DeepSeek 辅助审计 | ✅ 已验证 |
| 🧠 Skill | 项目级 OWASP Claude Code Skill | ✅ 已接入 |
| 🧪 模式 | Mock / Real 审计模式区分 | ✅ 已完成 |
| 🕰️ 旧版本 | Old-Version Focused Audit | ✅ 已完成 |
| 🌐 Web | 只读 Web Dashboard | ✅ 已完成 |
| 📦 产物 | report / result / summary 安全下载 | ✅ 已完成 |
| 🛠️ 恢复 | repair-stale 故障恢复 | ✅ 已完成 |
| 🚀 部署 | VPS systemd 常驻运行 | ✅ 已完成 |
| 🔐 访问 | Nginx + Basic Auth 公网只读访问 | ✅ 已验证 |
| 🔁 扩展 | Commit 级监控 | ⏳ 预留 |
| 🇨🇳 扩展 | Gitee 支持 | ⏸ 暂缓 |
flowchart TD
A[GitHub 开源项目<br/>Release / Tag] --> B[Watcher 常驻监控<br/>app/watcher.py]
B --> C[GitHub Client<br/>app/github_client.py]
C --> D[Diff Engine<br/>app/diff_engine.py]
D --> E[任务目录<br/>data/tasks/task_x]
E --> E1[diff.json]
E --> E2[context.md]
E --> F[Rule Engine<br/>app/rule_engine.py]
F --> F1[ranked_files.json]
F --> F2[high_risk_files.json]
F --> G[Claude Review<br/>app/claude_runner.py]
G --> H[Claude Code<br/>claude -p]
H --> S[项目级 OWASP Skill<br/>.claude/skills/owasp-security]
H --> K[DeepSeek API<br/>~/.claude/settings.json]
G --> R1[result.json]
G --> R2[report.md]
R1 --> O[Old-Version Review<br/>app/old_version_runner.py]
F2 --> O
O --> P1[拉取 old_ref 源码]
P1 --> P2[old_context.md]
P2 --> P3[old_version_result.json]
P2 --> P4[old_version_report.md]
R1 --> DB[SQLite<br/>data/patchdiff.db]
R2 --> DB
P3 --> DB
P4 --> DB
DB --> WEB[只读 Web Dashboard<br/>FastAPI + Jinja2]
python main.py diff --project Nacos --old 2.2.0 --new 2.2.1
python main.py score --task <id>
python main.py claude-review --task <id>
python main.py old-review --task <id>| 阶段 | 命令 | 目标 |
|---|---|---|
| Diff | diff |
获取 old_ref → new_ref 的 GitHub Compare Diff |
| Score | score |
通过规则引擎筛选高风险安全修复候选 |
| Diff 审计 | claude-review |
判断版本差异是否疑似安全修复,输出 result.json / report.md |
| 旧版本审计 | old-review |
回到 old_ref 源码,对修复前逻辑做重点漏洞审计 |
python main.py run --project Nacos --old 2.2.0 --new 2.2.1 --with-claude一键模式会执行:
diff → score → 可选 claude-review
如果 Diff 审计结果值得继续分析,再手动执行:
python main.py old-review --task <id>old-review 是本项目的核心增强能力。
它不是全仓库扫描,而是 基于新补丁内容回到旧版本做重点审计:
claude-review 发现疑似安全修复
→ 读取 result.json / high_risk_files.json / ranked_files.json
→ 选择 affected_files 和高风险文件(默认 ≤12 个)
→ 通过 GitHub API 拉取 old_ref 下完整源码
→ 生成 old_selected_files.json
→ 生成 old_context.md
→ 调用 Claude Code + DeepSeek + OWASP Skill
→ 输出 old_version_result.json / old_version_report.md
old-review 会重点要求模型分析:
- patch evidence:新补丁证据
- old-version code evidence:旧版本源码证据
- entry points:入口 API / Controller / Filter / Handler
- affected functions:受影响函数
- preconditions:触发前置条件
- attack surface:攻击面
- exploitability reasoning:可利用性推理
- false positive risk:误报风险
- local verification idea:本地/授权环境验证建议
- variant hunting:变体审计方向
安全限制:old-review 只做代码证据分析,不做公网验证,不生成批量利用脚本。
SilentPatch Watcher 不打包 Claude Code,也不直接管理模型 API Key。
运行时链路:
SilentPatch Watcher Python 程序
→ subprocess 调用 claude -p "<audit prompt>"
→ Claude Code 在项目根目录运行
→ 自动发现项目级 Skill: .claude/skills/owasp-security/SKILL.md
→ 读取 ~/.claude/settings.json 中的 DeepSeek 配置
→ 调用 DeepSeek Anthropic-compatible API
→ 返回结构化结果和报告
→ 写入 SQLite / Web Dashboard
关键点:
- Claude Code 是 VPS / Kali 上单独安装的命令,例如
/home/wzw/.npm-global/bin/claude。 - DeepSeek API Key 存储在
~/.claude/settings.json,不进入 Git 仓库。 - OWASP Skill 是项目级文件:
.claude/skills/owasp-security/SKILL.md。 app/claude_runner.py和app/old_version_runner.py都以项目根目录作为 Claude Code 的cwd,确保 Claude Code 能发现项目级 Skill。- Python 程序只负责调度、保存结果和展示,不管理模型 API Key。
系统支持两种审计模式:
| 模式 | 说明 | 用途 |
|---|---|---|
mock |
不调用 Claude Code,生成模拟审计结果 | E2E 验收、部署测试 |
real |
调用本机 Claude Code,再由 Claude Code 调用 DeepSeek | 真实审计 |
.env 中控制:
MOCK_CLAUDE=true # 模拟审计
MOCK_CLAUDE=false # 真实审计数据库会记录审计模式:
audit_results.audit_modeold_version_audit_results.audit_mode
Web Dashboard 会显示 MOCK / REAL 标签。
Dashboard 是只读页面,用于查看监控任务、审计状态、报告和结果摘要。
python main.py web默认访问:
http://127.0.0.1:8008
常用页面:
| 页面 | 说明 |
|---|---|
/ |
首页概览 |
/public/dashboard |
公网只读 Dashboard 入口 |
/public/tasks |
任务列表 |
/public/tasks/<id> |
任务详情 |
/public/tasks/<id>/summary |
动态摘要 |
公网访问建议使用 Nginx + Basic Auth,完整配置见:docs/nginx_basic_auth.md。
每个任务目录位于:
data/tasks/task_x/
常见文件:
| 文件 | 说明 | Web 是否展示/下载 |
|---|---|---|
diff.json |
GitHub Compare API 原始 Diff | ❌ 不下载 |
context.md |
版本和文件变更上下文 | 后台使用 |
ranked_files.json |
全量文件评分排序 | 页面展示摘要 |
high_risk_files.json |
高风险候选文件 | 页面展示摘要 |
claude_prompt.md |
Diff 审计 Prompt | ❌ 不展示 |
claude_raw.md |
Diff 审计原始输出 | ❌ 不展示 |
result.json |
Diff 审计结构化结果 | ✅ 可下载 |
report.md |
Diff 审计 Markdown 报告 | ✅ 可下载 |
old_selected_files.json |
old-review 文件选择结果 | ❌ 不下载 |
old_context.md |
old_ref 旧版本源码上下文 | ❌ 不下载 |
old_version_prompt.md |
old-review Prompt | ❌ 不下载 |
old_version_raw.md |
old-review 原始输出 | ❌ 不下载 |
old_version_result.json |
old-review 结构化结果 | ✅ 可下载 |
old_version_report.md |
old-review Markdown 报告 | ✅ 可下载 |
summary.json |
动态生成摘要 | ✅ 可下载 |
安全下载白名单只允许导出报告和结构化结果,不允许通过 Web 下载 raw、prompt、diff、old_context 等敏感上下文文件。
- Python 3.9+
- Git
- 可选:Claude Code,用于真实审计测试
git clone git@github.com:wzw57/silentpatch-watcher.git
cd silentpatch-watcher
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python main.py init# 查看帮助
python main.py --help
# 初始化
python main.py init
# 手动 Diff
python main.py diff --project Nacos --old 2.2.0 --new 2.2.1
# 规则打分
python main.py score --task 1
# Diff 审计
python main.py claude-review --task 1
# 旧版本重点审计
python main.py old-review --task 1
# 一键运行 diff + score,可选 Claude 审计
python main.py run --project Nacos --old 2.2.0 --new 2.2.1 --with-claude
# 常驻 watcher
python main.py watcher
python main.py watcher --once
# Web Dashboard
python main.py web
# 查看状态 / 待处理任务 / 修复 stale 状态
python main.py status
python main.py pending
python main.py pending --claude
python main.py repair-stale本地或 VPS 上可运行:
bash scripts/e2e_acceptance.sh脚本会验证:
initdiffscoreclaude-reviewmock 模式old-reviewmock 模式watcher --oncestatusrepair-stale- Web smoke test
result.json/report.md/old_version_result.json/old_version_report.md生成- raw 文件隔离
注意:diff 和 old-review 的真实源码拉取需要访问 GitHub API。长期运行建议配置
GITHUB_TOKEN。
- Linux VPS,Python 3.9+
- Git
- Node.js 18+ / 20+,用于安装 Claude Code
- Claude Code 已安装
~/.claude/settings.json已配置 DeepSeek Anthropic-compatible API- 可选:Nginx + Basic Auth,用于手机公网访问只读面板
cd /opt
git clone git@github.com:wzw57/silentpatch-watcher.git
cd /opt/silentpatch-watcher
chmod +x scripts/*.sh
bash scripts/install_vps.shGITHUB_TOKEN=github_pat_xxx
CLAUDE_CMD=/home/wzw/.npm-global/bin/claude
CLAUDE_BACKEND=deepseek
MOCK_CLAUDE=false
AUTO_CLAUDE_ENABLED=false
AUTO_CLAUDE_SCORE_THRESHOLD=12
CLAUDE_TIMEOUT_SECONDS=2400
MAX_CLAUDE_FILES=15
MAX_PATCH_CHARS_PER_FILE=10000
KEEP_TOP_N_FILES=5
WEB_HOST=127.0.0.1
WEB_PORT=8008
PUBLIC_DASHBOARD_ENABLED=true
PUBLIC_DASHBOARD_TITLE=SilentPatch Watcher
NOTIFY_ENABLED=false~/.claude/settings.json 示例:
{
"env": {
"ANTHROPIC_API_KEY": "sk-xxxx",
"ANTHROPIC_AUTH_TOKEN": "sk-xxxx",
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_MODEL": "deepseek-v4-flash",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-flash",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-flash"
}
}权限:
chmod 600 ~/.claude/settings.json验证:
claude -p "hello"sudo systemctl start silentpatch-watcher
sudo systemctl start silentpatch-web
systemctl status silentpatch-watcher --no-pager
systemctl status silentpatch-web --no-pagercd /opt/silentpatch-watcher
bash scripts/deploy_update.sh更新脚本会执行:
git pull → pip install → init → restart services
config/rules.yaml 负责初筛和分级,不做最终漏洞判断。
分级体系:
| 分数 | 等级 | 动作 |
|---|---|---|
| < 4 | low | 只记录摘要 |
| 4~5 | low-visible | 展示在任务详情 |
| 6~9 | medium | 进入待审队列 |
| 10~11 | high | 建议审计 |
| >= 12 | critical-candidate | Claude 候选 |
规则引擎会输出:
ranked_files.json
high_risk_files.json
Dashboard 中的 “Claude 运行中” 来自全局锁:
system_status.claude_running
任务列表中的 CLAUDE_RUNNING / OLD_REVIEW_RUNNING 来自单个任务状态:
diff_tasks.claude_status
diff_tasks.old_review_status
异常情况:
| 全局锁 | 任务状态 | Dashboard 显示 | 处理方式 |
|---|---|---|---|
false |
claude_running |
CLAUDE_STALE |
python main.py repair-stale |
false |
old_running |
OLD_REVIEW_STALE |
python main.py repair-stale |
repair-stale 只在 system_status.claude_running != 'true' 时生效,不会中断正在运行的 Claude 审计。
本项目严格限定为代码审计辅助工具:
- ✅ 只分析开源项目版本 Diff 和旧版本源码。
- ✅ 只输出风险推断、证据链和本地/授权环境验证建议。
- ✅
.env、data/、数据库、日志、API Key 不提交到 GitHub。 - ✅ Web Dashboard 默认只读,不提供删除任务、修改配置、触发攻击等功能。
- ❌ 不访问公网目标资产。
- ❌ 不进行 FOFA / Hunter 扫描。
- ❌ 不执行未授权验证。
- ❌ 不生成 WebShell。
- ❌ 不生成破坏性 payload。
- ❌ 不生成自动化攻击脚本。
敏感文件默认不通过 Web 展示或下载:
claude_raw.md
claude_prompt.md
old_version_raw.md
old_version_prompt.md
old_context.md
diff.json
silentpatch-watcher/
├── main.py
├── requirements.txt
├── .env.example
├── README.md
│
├── .claude/
│ └── skills/
│ └── owasp-security/
│ └── SKILL.md
│
├── config/
│ ├── projects.yaml
│ └── rules.yaml
│
├── app/
│ ├── db.py
│ ├── config_loader.py
│ ├── github_client.py
│ ├── diff_engine.py
│ ├── rule_engine.py
│ ├── claude_runner.py
│ ├── old_version_auditor.py
│ ├── old_version_runner.py
│ ├── watcher.py
│ └── utils.py
│
├── web/
│ ├── main.py
│ ├── templates/
│ └── static/
│
├── prompts/
│ ├── claude_audit_prompt.md
│ ├── old_version_audit_prompt.md
│ └── result_schema.md
│
├── scripts/
│ ├── install_vps.sh
│ ├── deploy_update.sh
│ ├── check_env.sh
│ ├── e2e_acceptance.sh
│ ├── systemd_watcher.service
│ └── systemd_web.service
│
├── docs/
│ ├── claude_code_deepseek.md
│ └── nginx_basic_auth.md
│
└── data/ # 运行数据,不提交 Git
├── patchdiff.db
└── tasks/
| Phase | 内容 | 状态 |
|---|---|---|
| 1 | 项目骨架、数据库、CLI 基础 | ✅ |
| 2 | GitHub Diff 获取 | ✅ |
| 3 | 规则引擎评分 | ✅ |
| 4 | Claude Code 审计集成 | ✅ |
| 5 | 一键 Run | ✅ |
| 6 | 常驻 Watcher | ✅ |
| 7 | 只读 Web Dashboard | ✅ |
| 8 | VPS 部署脚本 | ✅ |
| 9 | Gitee 支持 | ⏸ 暂缓 |
| 10 | Old-Version Focused Audit | ✅ |
| 11 | 状态恢复与稳定性加固 | ✅ |
- 样本评估集:记录命中、误报、漏报和人工判断。
- Commit 扫描模式:不依赖 Release / Tag。
- 告警通知增强:Telegram / 企业微信 / ServerChan。
- 自定义规则配置 UI 或配置校验。
- 多语言项目 old-review 文件选择优化。
- 商业软件 Jar Diff / 反编译 Diff(远期)。
当前稳定 MVP 标签:v0.1.0-mvp
当前主线已包含:VPS 长期监控、真实 DeepSeek 审计、项目级 OWASP Skill、Mock/Real 区分、Old-Version Focused Audit、报告下载、stale 状态恢复。