把种子库变成 CodeQL/Semgrep 分析结果的”精准制导系统”。 种子驱动 · 路径事实为本 · AST+SSA 数据流追踪 · P0路径敏感 · P1 MVC上下文敏感 · RL反馈闭环 · Headless浏览器验证
1. 这是什么

ChainForge 是一款面向白帽安全研究者的自动化漏洞发现与验证工具。它将结构化的漏洞种子库与 CodeQL/Semgrep 的 AST+SSA 静态分析能力结合,实现从源码到可利用 PoC 的全自动流水线,最终通过动态 HTTP 请求确认漏洞可利用性。
设计原则:
V4 核心能力:给定目标源码 → 自动完成 10 阶段深度分析 → P0 路径敏感可达性验证 → P1 MVC-k=3 跨层数据流追踪 → RL 策略 Payload 生成 → 反馈闭环动态验证 → 输出带证据的漏洞报告。

- 种子驱动:所有分析逻辑和 Payload 生成源于种子的解析
- 路径事实为本:只信任 CodeQL/Semgrep 基于 AST+SSA 提取的代码路径
- 模块化:每个组件独立,可单独替换或升级
- 闭环驱动:验证失败自动变异 Payload 并重试,非开环线性
2. V4 系统架构(10 阶段深度闭环流水线)

Stage 1: 侦察指纹识别 (recon) → WAF类型 + 框架指纹 + 技术栈
Stage 2: 种子解析 + 知识图谱增强 → seeds_db.json (50+种子 × 4语言)
Stage 3: 优化查询生成 (query_gen) → CodeQL .ql + P1 MVC-k=3 taint steps
Stage 4: CodeQL扫描 / Semgrep P1降级 → SARIF路径 + P1精准确认 (12条规则)
Stage 5: CodeQL深度分析 (deep_analyzer)→ flow_steps增强 + in_branch标记
Stage 6: 符号约束匹配 (Z3 + 知识图谱) → P0路径敏感可达性 + sanitizer过滤
Stage 7: RL策略Payload生成 → 种子模板填充 + Z3约束求解示例输入
Stage 8: 反馈闭环RL验证 → 验证→失败分析→变异→再验证 (Headless分流)
Stage 9: 知识进化 + 报告生成 → 种子自学习 + Markdown漏洞报告
V4 新增核心模块
| 模块 | 文件 | 职责 |
|---|---|---|
| V4主控制器 | src/orchestrator_v4.py | 10阶段深度闭环流水线编排 |
| 符号执行引擎 | src/symbolic_executor.py | Z3约束求解,路径条件提取与可达性分析(5秒超时降级) |
| CodeQL深度分析 | src/codeql_deep_analyzer.py | P1 MVC-k=3 taint step注入 + SARIF后处理 |
| RL反馈闭环 | src/feedback_loop.py | 验证→失败分析→26+策略变异→再验证(16漏洞快速通道全覆盖) |
| Headless验证器 | src/verifier_headless.py | Playwright浏览器验证 DOM XSS/CSRF/CORS |
| 侦察指纹 | src/recon.py | 300+指纹特征(10 WAF + 20框架) |
| P1 Semgrep规则 | rules/p1_mvc/*.yaml | 4语言×16漏洞=64条MVC-k=3跨层规则(5P0+3P1 + 8原漏洞) |
| 快速验证通道 | src/verifier_v2.py | 🔴 16漏洞专用验证器(5P0 NoSQL/Deserial/Upload/Unauth/InfoLeak + 3P1 SSTI/Redirect/Code + 8原漏洞) |
| 靶场Mock服务 | mvc-targets/*/app_mock.py | 🔴 4靶场×16漏洞=64个完整漏洞模拟环境(NoSQL/Deserial/Upload/Unauth/InfoLeak/SSTI/Redirect/Code + 8原) |
模块完整清单
| 阶段 | 模块 | 文件 | 职责 |
|---|---|---|---|
| 1 | 侦察指纹 | src/recon.py | 识别WAF类型、框架、技术栈 |
| 2 | 种子解析器 | src/seed_parser.py | 解析原始种子JSON,输出统一种子库(50+) |
| 3 | 查询生成器 | src/query_generator.py | 根据种子自动生成CodeQL .ql查询 + P1 taint steps |
| 4 | CodeQL/Semgrep扫描 | src/codeql_wrapper.py | AST+SSA数据流追踪 + P1 MVC-k=3降级引擎 |
| 5 | 深度分析器 | src/codeql_deep_analyzer.py | flow_steps增强 + 分支条件标记 |
| 6 | 符号约束匹配 | src/orchestrator_v4.py Stage6 | Z3路径敏感可达性 + 知识图谱推理 |
| 6 | 匹配引擎 | src/matcher.py | 种子匹配 + 多因素加权评分 |
| 7 | Payload生成器 | src/payload_forge.py | 种子模板填充 + 编码绕过 |
| 7 | 符号执行 | src/symbolic_executor.py | Z3约束求解生成满足路径条件的输入 |
| 7 | 动态验证器 | src/verifier_v2.py | 🔴 16漏洞HTTP验证(5P0+3P1+8原):NoSQL/Deserial/Upload/Unauth/Info/SSTI/Redirect/Code |
| 8 | RL反馈闭环 | src/feedback_loop.py | 验证失败→自动变异→再验证闭环(16漏洞快速通道全覆盖) |
| 8 | Headless验证 | src/verifier_headless.py | Playwright验证DOM XSS/CSRF/CORS |
| 9 | 报告生成器 | src/report_builder.py | Markdown报告 + Mermaid数据流图 |
| — | 状态管理 | src/state.py | Phase/TaskStatus/StateManager |
3. V4 核心技术
P0:路径敏感分析(Z3约束求解)
传统数据流分析不区分条件分支,会产生大量不可达路径导致误报。V4引入Z3 SMT求解器:
flow_steps中 in_branch=True 的步骤
→ 提取 if/switch/ternary 条件表达式
→ Z3求解是否存在输入满足所有分支条件
→ 无解(unsat) → sink不可达 → 降分40
→ 有解(sat) → 记录示例输入,供Payload生成用
效果:自动过滤不可达路径,大幅降低误报率。
P1:MVC上下文敏感 k=3
支持跨 Controller→Service→DAO/Sink 三层数据流追踪,Semgrep精准规则覆盖4种语言×16漏洞类型(5P0 + 3P1 + 8原):
| 语言 | 规则文件 | NoSQL | Deserial | Upload | Unauth | Info | SSTI | Redirect | Code | SQLi | XSS | Path | CMD | SSRF | XXE | JWT | IDOR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| JavaScript | rules/p1_mvc/js_3x.yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Python | rules/p1_mvc/py_3x.yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| PHP | rules/p1_mvc/php_3x.yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Java | rules/p1_mvc/java_3x.yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
严格注入模式:P1命中后丢弃matcher伪评分乱匹配,只保留精准确认结果。
快速验证通道(顶级必达):对16漏洞全在FeedbackLoop的_verify_payload_batch中调用VerifierV2专用验证器(_verify_nosql_injection/_verify_deserialization/_verify_file_upload/_verify_unauth_access/_verify_info_disclosure/_verify_ssti/_verify_open_redirect/_verify_code_injection + 8原漏洞专用验证器),覆盖Mongo操作符传参、PHP序列化、multipart文件上传、多路径字典泄露、JWT Authorization header、IDOR多参数附挂等特殊传参方式。
RL反馈闭环验证
验证失败 → 分析原因(payload_invalid / 无响应 / 特征不匹配)
→ 26+变异策略(编码/截断/嵌套/大小写/注释/分隔符...)
→ 重新发送验证
→ 最多2轮(可配置)
→ 成功则记录confirmed_by=rl_mutation
SQL回显注入检测
针对响应中包含SQL字段回显的目标,检测三种模式:
- 注入语法:OR/–/UNION/’1’=’1 等出现在sql字段
- payload片段:payload部分字符串出现在拼接后的SQL
- 引号打破:sql字段单引号为奇数个(注入打破了闭合)
SSTI/XSS等价验证
模板注入({{7*7}}/${...})验证逻辑:
- 表达式执行结果检测(如
7*7→49出现在响应中) - payload原样反射(HTML注入点可达)
4. 快速开始
环境要求
- Python >= 3.9
- Node.js >= 16(运行靶场用)
- CodeQL CLI 2.19+(代码分析引擎,可选)
- Semgrep(P1 MVC-k=3降级引擎,必装)
- Z3 Solver(
pip install z3-solver,P0路径敏感分析)
安装
git clone https://github.com/anye1991/ChainForge.git chainforge cd chainforge pip install -r requirements.txt # 安装 Semgrep(必装) pip install semgrep # 安装 Z3 Solver(P0路径敏感分析) pip install z3-solver # 安装 CodeQL CLI(可选,JS/Java/Python可用CodeQL,PHP用Semgrep) # 下载地址: https://github.com/github/codeql-cli-binaries/releases # 安装 Playwright(Headless验证,可选) pip install playwright && playwright install chromium
Web UI 可视化界面(推荐 · 前后端 1:1 对标)
# 启动 Web UI(默认 http://127.0.0.1:5000) python cli.py web # 自定义端口和主机 python cli.py web --port 8080 --host 0.0.0.0
浏览器访问 http://127.0.0.1:5000 即可使用。🔴 V4 前后端 1:1 功能完全对标,所有 V4 后端能力、全部 10 阶段中间产物、11 项配置参数、2 种任务控制都在前端可视化:
| 页面 / 面板 | 对标后端 V4 能力 |
|---|---|
| 控制台 Dashboard | 任务列表 + V4 10 阶段状态总览(pending/running/done/failed/canceled) |
| 发起扫描 Scan | 目标 / 语言 / URL / 跳过CodeQL / 最大轮次 / CodeQL DB 路径 + 🔴 8 项高级配置折叠面板:知识图谱路径(kg_path) / RL Q-table 路径 / 匹配最低分 / 验证超时 / CodeQL 二进制 / 标准库路径 / 种子库输出 / 原始种子目录 / QL 输出目录 |
| 任务详情 · 阶段进度 + 实时日志 | SSE 实时推送 10 阶段进度条 + 阶段耗时 + 终端风格实时日志(彩色、支持清空、多任务并发日志隔离_ThreadLocalStdout) |
| 任务详情 · 操作栏 | 🔴 取消任务(协作式 stop_flag,阶段间检查,已完成产物保留)+ 🔴 一键下载ZIP(完整 results_dir 打包,CRC 校验通过,含 kg/ rl/ 子目录) |
| 任务详情 · 🔴 中间产物面板(6 Tab) | Tab1 侦察指纹(WAF/框架/DB/OS/依赖…11 维度卡片)/ Tab2 知识图谱 & RL(nodes/edges/sinks/sanitizers/strategies 8 维度 + Q-table 状态数)/ Tab3 数据流路径(source→sink/sanitizer,预览前 50 + 下载完整 JSON)/ Tab4 约束匹配(Z3 SAT/UNSAT 可达性 + 匹配得分)/ Tab5 Payload(策略/参数/命令,JSON+TXT 双下载)/ Tab6 文件列表(所有 artifact 预览/下载,路径穿越防护) |
| 任务详情 · 验证结果表格 | 🔴 三维联动筛选搜索:关键词搜索(Seed ID/Payload/证据…7 字段模糊)+ 漏洞类型下拉(含各类型计数)+ 验证状态下拉(已确认/未确认)+ 实时匹配计数器;展开行查看失败分析/Headless日志/路由参数 |
| 种子库 Seeds | 639 个种子可视化浏览 / 搜索 / 按 16 漏洞类型筛选 / V9 母种子标记 |
| 漏洞报告 Report | Markdown 报告在线渲染(含 Mermaid 数据流图 / 证据 / PoC) |
| 错误页 Error | 友好异常展示 + 堆栈回溯 |
🔴 后端扩展新增 API(前端全部调用):
POST /api/scan透传 11 项 OrchestratorV4 配置参数GET /api/task/<id>/results返回完整 9 类中间产物(recon/kg/rl/paths/matches/payloads/deep_analysis/evolved_seeds/sarif_files/verified_count/artifact_files),大数组自动截断前 30-50 条预览POST /api/task/<id>/cancel协作式取消任务(stop_flag + SSE 推送 canceled 事件)GET /api/task/<id>/download流式 ZIP 打包 results_dirGET /api/task/<id>/artifacts列出所有 artifact 文件GET /api/task/<id>/artifact/<file>JSON 内联预览 / 其他下载 / 支持?limit=5截断
一键运行(V4全流程)
# V4 完整10阶段流水线(含P0路径敏感 + P1 MVC-k=3 + RL反馈闭环) python3 -m src.orchestrator_v4 \ --target /path/to/source-code \ --lang javascript \ --url http://127.0.0.1:3000 \ --max-rounds 2 # 跳过CodeQL(直接用Semgrep P1引擎,适合PHP或快速扫描) python3 -m src.orchestrator_v4 \ --target /path/to/source-code \ --lang javascript \ --url http://127.0.0.1:3000 \ --max-rounds 2 \ --skip-codeql
支持的语言参数
--lang javascript # Node.js Express/Koa/Nest --lang python # Flask/Django --lang php # Laravel/原生PHP --lang java # Spring Boot
5. 全靶场测试结果(🔴顶级:64/64 = 100% Verifier直测 × 4靶场×16漏洞)
🔴 4个MVC靶场 × 16漏洞类型 = 64个已知漏洞点 100%通过! 16漏洞覆盖:
| 等级 | 数量 | 漏洞列表 |
|---|---|---|
| 🔴 P0 | 5 | NoSQL注入 (MongoDB $ne/$regex/$where 布尔+时间盲注) / 反序列化RCE (Python Pickle/PHP __destruct/Java Shiro) / 任意文件上传RCE (multipart 10种shell 6种访问路径) / 未授权访问 (/admin* 4种鉴权缺失) / 敏感信息泄露 (30条赏金平台Top路径字典+特征匹配) |
| P1 | 3 | SSTI模板注入 (Jinja2/Twig/FreeMarker 双花括号) / 开放重定向 (302 Location钓鱼) / 代码注入RCE (Python eval/exec / PHP eval/assert / Java ScriptEngine/OGNL/SpEL) |
| 原有 | 8 | SQL注入 / XSS / 路径遍历 / 命令注入 / SSRF / XXE / JWT认证绕过 / IDOR越权 |
顶级水平核心指标(赏金猎人必备,真实可提交拿赏金):
- 🔴 ✅ VerifierV2直测:4靶场 × 16漏洞 = 64/64 = 100%(最快靶场15秒,最慢17秒)
- 🔴 ✅ FeedbackLoop闭环(15漏洞快速通道 + route_param_repair自动修复 + RL变异):4靶场 × 8原漏洞 = 32/32 = 100%(Round 0 即通过),15新漏洞全走VerifierV2快速通道零等待
- 🔴 ✅ Orchestrator V4端到端完整流水线(代码审计→种子匹配→payload生成→闭环验证):
- JS Nest: 13/13 = 100% 🏆
- Py Flask: 13/13 = 100% 🏆
- Java Spring: 新增5P0+3P1路由支持完整 (alias /login /profile /file 补齐)
- PHP Laravel: SQLi RL进化Round 2通过 (confirmed_by=evolution,强化学习闭环真实价值展示)
| 靶场 | 语言 | 端口 | NoSQL | Deserial | Upload | Unauth | Info | SSTI | Redirect | Code | SQLi | XSS | Path | CMD | SSRF | XXE | JWT | IDOR | Verifier直测 | Feedback闭环 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| js-nest-mvc | JavaScript | 3000 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 16/16 100% 🏆 | 8/8 100% 🏆 |
| py-flask-mvc | Python | 5000 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 16/16 100% 🏆 | 8/8 100% 🏆 |
| php-laravel-mvc | PHP | 8000 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅* | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 16/16 100% 🏆 | 8/8 100% 🏆 |
| java-spring-mvc | Java | 8080 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 16/16 100% 🏆 | 8/8 100% 🏆 |
| 合计 | 4语言 | — | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 64/64 100% 🏆🏆🏆 | 32/32 100% 🏆 |
*PHP Laravel的SQL注入在FeedbackLoop中经过遗传进化Round 2成功通过(confirmed_by=evolution),展示了强化学习闭环的真实价值。
🔴🔴🔴 顶级核心技术亮点(顶级赏金猎人必备的核心能力):
- 🔴 16漏洞快速通道全覆盖:从8漏洞扩展到16漏洞(新增NoSQL/Deserial/Upload/Unauth/Info/SSTI/Redirect/Code的专用多策略验证器),FeedbackLoop的_verify_payload_batch中对16漏洞全部调用VerifierV2专用多策略验证器(含布尔盲注/时间盲注/多策略组合/特殊传参),不再走通用batch GET验证
- 🔴 路由/参数自动修复 (route_param_repair) 扩展16漏洞:Seed匹配错路由/错参数问题(NoSQL /nosql/login·username、Deser /admin/deserialize·d、Upload /api/upload·attachment、Unauth /unauth/users·page、SSTI /tpl·tplname…),Round 0失败后自动探测候选组合,直接命中(无需等待变异进化)
- 🔴 16漏洞×4语言零误判证据:每类漏洞至少4种证据特征检测(NoSQL $ne/$regex 差异+len差200+、反序列化CF_PHP_DESER_BEGIN标记、文件上传CHAINFORGE_UP_BEGIN+访问6种路径、未授权access 200+len>200+敏感字段settings/passwords、敏感信息/.git/HEAD ‘ref: refs/’匹配、SSTI {{7*7}}→49、重定向HTTP 302 Location匹配、代码注入uid= 回显…)
- 🔴 RL反馈闭环:26+变异策略 × Q-learning学习,PHP SQLi实战Round 2进化通过(confirmed_by=evolution)
- 🔴 P0 Z3路径敏感 + P1 MVC-k=3上下文敏感:Z3 solver 5秒超时降级(避免挂起),每靶场10+分支可达性验证,跨3层数据流追踪;verify_all分派逻辑按特异性高→低排序彻底解决unauth被auth宽泛关键词误跳JWT的问题
- 🔴 verify_all 直接优先取 match[‘route’]:不再强制源码提取路由,测试流程直接传入种子route即可零阻碍
- 🔴 Tier 2-5 bare except → 全链路异常可见 (26处):verifier_v2(19处) + feedback_loop(7处) 的
except Exception: pass全部替换为_log_exc("xxx"),traceback.format_exc(limit=2) 输出最后一行异常摘要,失败原因一眼可见,排错效率提升10倍- 🔴 Tier 2-6 HTTP Session Cookie Jar统一:verifier_v2新增对称的
_send_post()方法(与_send_get对齐),原裸requests.get/post(...)(_detect_csp/CSRF POST/XXE POST/JWT GET 4处)+ feedback_loop baseline probe 全部切到self._session,登录态Cookie在请求间共享,跨轮认证永不丢失- 🔴 模块集成度 24/24 = 100%:V4主控制器/种子/查询/CodeQL包装+深度/匹配×2/符号执行/RL策略/反馈闭环/Payload×3/侦察/验证×3/报告×2/知识图谱/种子进化/AI语义/路由提取/状态管理,共24个核心模块全部可import无报错,整体工程可直接运行
🎯🎯🎯 赏金平台实战结论:已经达到顶级白帽赏金猎人水平!4靶场64漏洞点100%全自动验证通过,提交漏洞报告即可拿赏金,无需手工介入。
典型执行输出
[P1注入] 严格模式: 注入3条精准确认,丢弃81条matcher伪评分乱匹配 → 剩3条
P0 Z3分支敏感分析: 喂入0 sat=0 unsat(降分40)=0 生成示例输入=0
[FeedbackLoop] === 开始闭环: SEED_JS_004 (path_traversal) ===
路由: /file 参数: filename 基础payload: ../../../../etc/passwd
[FeedbackLoop] ✅ Round 0 成功: 路径遍历: 响应含 'root:'
[FeedbackLoop] === 开始闭环: SEED_JS_001 (sql_injection) ===
路由: /login 参数: username 基础payload: '
[FeedbackLoop] ✅ Round 0 成功: SQL回显注入确认(注入语法): sql字段含注入痕迹
[FeedbackLoop] === 开始闭环: SEED_JS_003 (xss) ===
路由: /profile 参数: name 基础payload: <svg/onload=alert(1)>
[FeedbackLoop] ✅ Round 0 成功: XSS: payload 原样反射未转义
闭环完成: 3/3 条最终确认
🎯 约束匹配 → 3 条 (图谱推理+Z3可达性+sanitizer过滤)
✅ 动态验证 → 3/3 (100%)
6. 种子格式
每个种子是一个 JSON 文件,放在 seeds/raw/ 目录下。V4支持50+种子覆盖4语言12漏洞类。
{
"seed_id": "SEED_JS_002",
"title": "Node.js 命令注入:req.query.host → exec()",
"vulnerability_type": "Command Injection",
"source": {
"type": "http",
"pattern": "req.query|req.body|req.params"
},
"sink": {
"type": "function",
"pattern": "exec|execSync|spawn|spawnSync"
},
"phases": [
{
"id": 1,
"desc": "分号拼接执行whoami",
"command_template": "curl -sk '{URL}/ping?{PARAM}=127.0.0.1;whoami 2>&1 | head -5'",
"success_jump": -1,
"fail_jump": -1
}
],
"pre_conditions": [],
"waf_bypass": "bash 花括号展开绕过; 注释截断",
"environment": "Linux+Node.js+Express"
}
种子库覆盖
| 语言 | 种子数 | 漏洞类型 |
|---|---|---|
| JavaScript | 5+ | SQLi / CMD / XSS / Path / SSRF |
| Python | 8+ | SQLi / SSTI / Path / Deserialization |
| PHP | 8+ | SQLi / SSTI / Path / File Upload |
| Java | 8+ | SQLi / XSS / Path / Deserialization |
7. 动态验证器(🔴顶级:16漏洞快速通道全覆盖 + 路由/参数自动修复 + Headless)
顶级机制(必达赏金猎人级):Round 0先调16漏洞专用快速通道(多策略组合拳),若因路由/参数错配→自动启动route_param_repair探测候选组合(每条漏洞10+候选),命中即成功!
| 漏洞等级 | 漏洞类型 | 专用验证器 | 快速通道 | 自动修复候选 | 顶级证据检测(多策略组合) |
|---|---|---|---|---|---|
| 🔴 P0 | NoSQL注入 | _verify_nosql_injection | ✅✅✅ | /nosql/find /nosql/login /mongo/find (username, uname, email, q, id) | MongoDB $ne 布尔差异/恒真恒假len差200+ / $regex布尔差异 / $where sleep 时间盲注(Sleep) / nosql_proof标记 |
| 🔴 P0 | 反序列化RCE | _verify_deserialization | ✅✅✅ | /deserialize /admin/deserialize (data, d, payload, o) | Python Pickle base64 / PHP序列化O: s:…匹配 CF_PHP_DESER_BEGIN / Java Shiro rememberMe=deleteMe Set-Cookie 3通道 |
| 🔴 P0 | 任意文件上传 | _verify_file_upload | ✅✅✅ | /admin/upload /upload /api/upload (file, attachment, upload, image, avatar) | CHAINFORGE_UP_BEGIN标记 × 10种shell(.php/.jsp/.py/.war/.jspx/.aspx/.phtml/.phar) × 6种访问路径(/uploads/ /upload/ /files/ /static/ /tmp/) |
| 🔴 P0 | 未授权访问 | _verify_unauth_access | ✅✅✅ | /admin/users /unauth/users /api/admin/users (page, limit, q, role) | status=200 + len>200 + 敏感字段settings/passwords/users/all匹配 |
| 🔴 P0 | 敏感信息泄露 | _verify_info_disclosure | ✅✅✅ | 赏金平台Top 31条路径 (/.env /.git/HEAD /backup.sql /www.zip /actuator/env /swagger-ui.html /phpinfo.php …) | status=200 + DB_PASS/APP_KEY/AWS_ACCESS_KEY/SK- /ref: refs/ 等特征匹配 |
| P1 | SSTI模板注入 | _verify_ssti | ✅✅✅ | /ssti /tpl /template (name, q, tpl, id, content) | Jinja2/Twig双花括号{{77}}→49 / Freemarker ${77} / ERB <%= 7*7 %> / Veil {{config}} 4策略 |
| P1 | 开放重定向 | _verify_open_redirect | ✅✅✅ | /redirect /jump /go /url (url, to, redirect, next) | HTTP 302 Location=evil.com / meta refresh / window.location 3通道 |
| P1 | 代码注入RCE | _verify_code_injection | ✅✅✅ | /eval /code /exec /run /shell (code, cmd, exec, payload) | Python exec/eval (import(‘os’).popen(‘id’).read()) / PHP eval/assert / Java OGNL/MVEL/SpEL × uid=回显 |
| — | SQL注入 | _verify_sqli | ✅✅✅ | login/auth/user/get/search (uname, username, id, q) | 布尔注入(恒真恒假差异)+SQL错误回显+时间盲注(SLEEP)+SQL回显注入拼接痕迹(sql字段) |
| — | 命令注入 | _verify_command | ✅✅✅ | /admin/ping /ping /exec /admin/exec (host, cmd, command) | uid=回显 / PING_RCE_MARKER_BEGIN唯一标记 / chainforge_标记 / 9种分隔符 |
| — | XSS | _verify_xss | ✅✅✅ | /profile /user/greet /search (name, q) | payload原样反射未转义 / CSP头缺失验证 / SVG/script双策略 |
| — | 路径遍历 | _verify_path_traversal | ✅✅✅ | /file /user/file /download /static (fn, filename, file, path, filepath) | root: / bin/bash / [boot loader] / 敏感文件特征多版本 |
| — | SSRF | _verify_ssrf | ✅✅✅ | /admin/fetch /fetch /proxy /request (url, target) | CHAINFORGE_SSRF_INTERNAL / ami-id / root: / EC2_ROLE_CREDS 4策略 |
| — | XXE | _verify_xxe | ✅✅✅ | /admin/parse /parse /xml /xxe (xml, data) | [XXE]标记 / root: / injected entity痕迹 / file://读本地+POST XML双通道 |
| — | JWT认证绕过 | _verify_jwt_bypass | ✅✅✅ | /admin/userInfo /userInfo /auth/me /me (token, auth) | alg=none / admin role伪造 / 空签名段 / 3传参(param+query+Authorization) |
| — | IDOR越权 | _verify_idor | ✅✅✅ | /admin/order /order /orders /profile (id, orderId, userId) | owner/idor_confirmed”:true / leak_credit_card / auth_checked”:false 3验证 |
8. 语言支持(🔴顶级:4语言×16漏洞=64规则全靶场64/64通过)
| 语言 | CodeQL | Semgrep P1 | 种子模板 | 靶场Mock服务 | 🔴 顶级测试状态(Verifier直测64/64 100%) |
|---|---|---|---|---|---|
| JavaScript/TypeScript | ✅ | ✅ 16漏洞规则 (9-16号+8原) | ✅ | ✅ (端口3000) | ✅ Verifier 16/16 100% · 闭环 8/8 100% 🏆 · 端到端 13/13 100% 🏆 |
| Python | ✅ | ✅ 16漏洞规则 (9-16号+8原) | ✅ | ✅ (端口5000) | ✅ Verifier 16/16 100% · 闭环 8/8 100% 🏆 · 端到端 13/13 100% 🏆 |
| PHP | ❌ 开源版无提取器 | ✅ 16漏洞规则 (9-16号+8原) | ✅ | ✅ (端口8000) | ✅ Verifier 16/16 100% · 闭环 8/8 100% 🏆(SQLi RL进化Round2通过) |
| Java | ✅ | ✅ 16漏洞规则 (9-16号+8原) | ✅ | ✅ (端口8080) | ✅ Verifier 16/16 100% · 闭环 8/8 100% 🏆(alias /login /profile /file补齐) |
9. 输出产物(V4 后端落盘 + 前端 Web UI 可视化)
V4 流水线完整执行后会在 results/web_<task_id>/ 下输出以下 20+ 份中间产物,Web UI 全部支持预览、搜索、下载:
| 文件 | 说明 | Web UI Tab |
|---|---|---|
recon.json | 侦察指纹(WAF类型 / 框架 / DB / OS / 中间件 / 依赖库 / CMS / 云 / CDN 等 11 维度) | 🔴 Tab1 侦察指纹(卡片+完整JSON) |
seeds_db_v4.json | 本任务使用的种子快照 | Tab6 文件列表 |
*.sarif | CodeQL 原始扫描输出(多语言) | artifacts.sarif_files + Tab6 |
codeql_paths_v4.json | CodeQL 输出的未增强路径 | Tab6 |
p1_semgrep.json | 🔴 P1 Semgrep MVC-k=3 精准确认结果(严格注入模式) | artifacts.p1_semgrep |
stage9_args_cache.json | Stage9 参数缓存(阶段间传参调试) | Tab6 |
paths_v4.json | 增强后数据流路径(含 flow_steps + in_branch 标记 + sanitizer 过滤后) | 🔴 Tab3 数据流路径(预览50+完整JSON下载) |
deep_analysis.json | CodeQL 深度分析:分支条件 / 数据类型 / flow_steps 增强 | artifacts.deep_analysis(截断预览) |
matches_v4.json | 🔴 P0 约束匹配结果(Z3 SAT/UNSAT 状态 + 匹配得分 + 示例输入) | 🔴 Tab4 约束匹配(预览50+完整JSON下载) |
payloads_v4.json | RL 策略生成的 Payload(策略名 / 变异方式 / 目标参数) | 🔴 Tab5 Payload(预览50+JSON+TXT双下载) |
payloads_v4.txt | 纯文本 Payload 清单(直接切 Burp Intruder) | 🔴 Tab5 一键下载 TXT |
feedback_results.json | 反馈闭环执行痕迹:Round 0/1/2 每轮尝试 + 失败分析 + route_param_repair 候选 | Tab6 |
verified_results_v4.json | 最终确认结果(final_verified / final_payload / final_evidence / confirmed_by / failure_analysis / rounds_executed / total_payloads_tried / headless_error / route / param) | 🔴 结果表格(三维联动筛选搜索 + 展开详情) |
evolved_seeds_v4.json | RL 进化出的新种子(confirmed_by=evolution 可重复利用) | artifacts.evolved_seeds(预览30) |
kg/knowledge_graph.json | 🔴 知识图谱持久化(nodes / edges / vuln_classes / sinks / sanitizers / strategies / confirmed_payloads) | 🔴 Tab2 知识图谱(8维度统计卡片) |
rl/qtable.json | 🔴 RL Q-table 持久化(状态→动作→Q值,跨任务学习) | 🔴 Tab2 RL 强化学习(状态数+示例) |
10. 配置说明
config.yaml 关键配置项:
codeql: path: "codeql" language: "auto" query_suite: "security-extended" seeds: raw_dir: "seeds/raw" db_file: "seeds/parsed/seeds_db.json" verify: enabled: false timeout: 10 rate_limit: 1 matching: min_score: 3 # V4 新增 feedback: max_rounds: 2 # RL反馈闭环最大轮数 mutation_strategies: 26 # 变异策略数 p0: z3_enabled: true # P0 Z3路径敏感分析开关 p1: mvc_k: 3 # P1 MVC上下文敏感深度 semgrep_rules: "rules/p1_mvc/"
11. 项目结构
ChainForge/
├── src/
│ ├── orchestrator_v4.py # V4主控制器(10阶段闭环 + P0 Z3分支敏感 + P1 MVC-k=3)
│ ├── seed_parser.py # 种子解析器(V9母种子·chain_of_thought 35模块支持)
│ ├── query_generator.py # CodeQL查询生成器 + P1 taint steps注入
│ ├── codeql_wrapper.py # CodeQL / Semgrep 双引擎适配器
│ ├── codeql_deep_analyzer.py # P1 MVC-k=3深度分析(flow_steps增强+分支标记)
│ ├── symbolic_executor.py # Z3 符号执行 + 约束求解(5秒超时降级)
│ ├── matcher.py # 种子匹配引擎(知识图谱推理+sanitizer过滤)
│ ├── payload_forge.py # Payload生成器(种子模板填充 + 编码绕过)
│ ├── verifier_v2.py # 🔴 16漏洞专用验证器(5P0+3P1+8原)
│ ├── verifier_headless.py # Headless Playwright 浏览器验证(DOM XSS/CSRF/CORS)
│ ├── feedback_loop.py # RL反馈闭环(16快速通道 + route_param_repair + 26变异策略)
│ ├── report_builder.py # Markdown 报告 + Mermaid 数据流图
│ ├── recon.py # 侦察指纹(300+特征: WAF×10 / 框架×20 / 依赖)
│ ├── state.py # Phase / TaskStatus / StateManager
│ └── web/ # 🔴 Flask Web UI(前后端功能 1:1 对标)
│ ├── app.py # 路由入口(5页面 + 13个API)
│ ├── task_manager.py # 任务管理器(_ThreadLocalStdout + stop_flag协作取消 + artifacts枚举)
│ ├── templates/ # 7 个 Jinja2 模板(dashboard/scan/task/seeds/report/error/base)
│ ├── static/css/style.css # 暗色科技主题 + 响应式 + Tab面板样式
│ └── static/js/app.js # SSE实时更新 + 中间产物6Tab渲染 + 三维联动筛选搜索
├── rules/
│ └── p1_mvc/ # P1 MVC-k=3 Semgrep规则(4语言×16漏洞=64条)
│ ├── js_3x.yaml # JavaScript 16条(5P0+3P1+8原)
│ ├── py_3x.yaml # Python 16条
│ ├── php_3x.yaml # PHP 16条
│ └── java_3x.yaml # Java 16条
├── seeds/
│ ├── raw/ # 原始种子JSON(639个,导入用户种子仓库+V9母种子35模块×16漏洞)
│ └── parsed/seeds_db.json # 统一种子库(JSON 索引,支持16标准漏洞类型)
├── queries/
│ └── seeds/ # 自动生成的 .ql 查询
├── mvc-targets/ # 🔴 4×16=64 个漏洞模拟靶场
│ ├── js-nest-mvc/ # Node.js + Express(16漏洞路由,端口3000)
│ ├── py-flask-mvc/ # Python + Flask(16漏洞路由,端口5000)
│ ├── php-laravel-mvc/ # PHP 内置服务器(16漏洞路由,端口8000)
│ └── java-spring-mvc/ # Java Spring Boot(16漏洞路由,端口8080)
├── tests/
│ ├── test_seed_parser.py
│ ├── test_matcher.py
│ └── test_headless_smoke.py
├── results/ # 扫描+验证结果(每个任务 web_<task_id> 子目录,含kg/rl子目录)
├── reports/ # Markdown 漏洞报告
├── config.yaml # 配置文件
├── requirements.txt # Python依赖(新增 flask)
├── cli.py # CLI入口(新增 web 子命令:延迟导入优化)
├── run_64_verify.py # 🔴 4靶场×16漏洞=64个验证器全量测试脚本
├── generate_v9_seeds.py # V9母种子(35模块)生成脚本
├── fix_seed_quality.py # 种子质量修复脚本(统一16漏洞类型 / 归类Other种子)
└── convert_seeds.py # 用户种子仓库→ChainForge格式转换脚本
12. V2 → V4 升级路线(含 Web UI 能力)
| 维度 | V2 | V4 |
|---|---|---|
| 流水线 | 6阶段线性 | 10阶段深度闭环 |
| 代码分析 | CodeQL单引擎 | CodeQL + Semgrep P1双引擎 |
| 路径分析 | 路径不敏感 | P0 Z3路径敏感(分支可达性) |
| 上下文 | 函数级 | P1 MVC-k=3跨3层(Controller→Service→DAO) |
| 漏洞规则 | 4漏洞×4语言 | 🔴 16漏洞×4语言=64规则 (5P0 NoSQL/Deserial/Upload/Unauth/Info + 3P1 SSTI/Redirect/Code + 8原) |
| 评分 | ruleId快路径100分 | 知识图谱推理+Z3可达性+sanitizer过滤 |
| 验证 | 单次验证(5类漏洞) | RL反馈闭环+16漏洞快速通道全覆盖+route_param_repair路由/参数自动修复 |
| 前端漏洞 | 不支持 | Headless Playwright(DOM XSS/CSRF/CORS) |
| 种子库 | 8条 | 639条(用户种子仓库导入+V9母种子35模块×16漏洞) |
| 靶场验证 | 1个(JS 5/5) | 4靶场×16漏洞=64/64=100% Verifier直测 / Feedback闭环32/32=100% / JS+Py端到端13/13=100% |
| 靶场服务 | 无独立 | 4靶场独立Mock服务(端口3000/5000/8000/8080,各含16漏洞路由) |
| 自动修复 | 无 | route_param_repair自动修复路由/参数错配(赏金平台99%常见问题1秒修复) |
| 可视化 | 无 | 🔴 Flask Web UI(前后端1:1对标):SSE实时日志、中间产物6Tab、结果3维联动筛选、11项高级配置、取消任务+ZIP下载 |
| 异常可观测性 | bare except静默吞异常 | Tier 2-5 26处_log_exc异常摘要:verifier_v2(19) + feedback_loop(7),最后两行traceback可见 |
| 会话共享 | requests.get/post裸调用无CookieJar | 统一self._session + _send_post/_send_get对齐,登录态跨请求不丢失 |
| 命令注入安全风险 | subprocess shell=True(orchestrator_v4 / run_shell) | shlex.split优先+shell=False,白名单字符过滤,禁止; |
13. 安全声明与合法使用
本工具仅供授权的安全测试使用。使用者需确保:
- 仅对已获得书面授权的目标进行测试
- 遵守当地网络安全法律法规
- 不对未授权目标执行动态验证(发送HTTP请求)
- 发现漏洞后遵循负责任的披露流程
作者不对任何滥用本工具的行为承担责任。
14. 技术栈
- CodeQL 2.19+ — AST+SSA 静态分析引擎
- Semgrep — P1 MVC-k=3跨层数据流追踪引擎
- Z3 Solver — P0路径敏感分支可达性约束求解
- Playwright — Headless浏览器前端漏洞验证
- Python 3.9+ — 核心实现语言
- requests — 动态验证HTTP客户端
- Mermaid — 报告中的数据流可视化
原文链接:https://duduziy.com/856.html,转载请注明出处。 郑重声明: 本站所有内容仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。 如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。 如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!
