Skip to content

wzw57/silentpatch-watcher

Repository files navigation

SilentPatch Watcher

基于 GitHub Release/Tag 监控、Patch Diff、规则引擎、Claude Code、DeepSeek 与旧版本源码审计 的 Silent Patch 安全审计辅助平台。

Python SQLite FastAPI Claude Code


项目简介

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]
Loading

核心审计流程

1. 标准人工审计链路

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 源码,对修复前逻辑做重点漏洞审计

2. 一键运行链路

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-Version Focused Audit

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 只做代码证据分析,不做公网验证,不生成批量利用脚本。


Claude Code / DeepSeek / OWASP Skill

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.pyapp/old_version_runner.py 都以项目根目录作为 Claude Code 的 cwd,确保 Claude Code 能发现项目级 Skill。
  • Python 程序只负责调度、保存结果和展示,不管理模型 API Key。

Mock / Real 审计模式

系统支持两种审计模式:

模式 说明 用途
mock 不调用 Claude Code,生成模拟审计结果 E2E 验收、部署测试
real 调用本机 Claude Code,再由 Claude Code 调用 DeepSeek 真实审计

.env 中控制:

MOCK_CLAUDE=true   # 模拟审计
MOCK_CLAUDE=false  # 真实审计

数据库会记录审计模式:

  • audit_results.audit_mode
  • old_version_audit_results.audit_mode

Web Dashboard 会显示 MOCK / REAL 标签。


Web Dashboard

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

E2E 验收

本地或 VPS 上可运行:

bash scripts/e2e_acceptance.sh

脚本会验证:

  • init
  • diff
  • score
  • claude-review mock 模式
  • old-review mock 模式
  • watcher --once
  • status
  • repair-stale
  • Web smoke test
  • result.json / report.md / old_version_result.json / old_version_report.md 生成
  • raw 文件隔离

注意:diff 和 old-review 的真实源码拉取需要访问 GitHub API。长期运行建议配置 GITHUB_TOKEN


VPS 部署

前提条件

  • 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.sh

.env 示例

GITHUB_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 Code + DeepSeek 配置

~/.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-pager

更新部署

cd /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 和旧版本源码。
  • ✅ 只输出风险推断、证据链和本地/授权环境验证建议。
  • .envdata/、数据库、日志、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 状态恢复。

About

基于 GitHub Patch Diff、规则引擎、Claude Code 与旧版本源码审计的 Silent Patch 安全分析平台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors