资讯动态

ChainForge — 种子驱动的自动化漏洞利用闭环流水线 V4

发布时间:2026/10/23 6:37:17 来源:尧图企业网站定制
把种子库变成 CodeQL/Semgrep 分析结果的“精准制导系统”。种子驱动 · 路径事实为本 · ASTSSA 数据流追踪 · P0 路径敏感 · P1 MVC 上下文敏感 · RL 反馈闭环 · Headless 浏览器验证目录1. 这是什么2. V4 系统架构10 阶段深度闭环流水线3. V4 核心技术4. 快速开始5. 靶场测试结果6. 种子格式配置说明安全声明与合法使用技术栈TL;DRChainForge种子驱动的自动化漏洞发现与验证工具10 阶段流水线从侦察指纹到报告生成全自动闭环P0 Z3 路径敏感约束求解过滤不可达路径降低误报P1 MVC-k3跨 Controller→Service→DAO 三层追踪RL 反馈闭环验证失败自动变异 Payload 并重试靶场成绩4 语言 64/64 漏洞点 100% 通过1. 这是什么ChainForge 是一款面向白帽安全研究者的自动化漏洞发现与验证工具。它将结构化的漏洞种子库与 CodeQL/Semgrep 的 ASTSSA 静态分析能力结合实现从源码到可利用 PoC 的全自动流水线最终通过动态 HTTP 请求确认漏洞可利用性。V4 核心能力给定目标源码 → 自动完成 10 阶段深度分析 → P0 路径敏感可达性验证 → P1 MVC-k3 跨层数据流追踪 → RL 策略 Payload 生成 → 反馈闭环动态验证 → 输出带证据的漏洞报告。设计原则种子驱动所有分析逻辑和 Payload 生成源于种子的解析路径事实为本只信任 CodeQL/Semgrep 基于 ASTSSA 提取的代码路径模块化每个组件独立可单独替换或升级闭环驱动验证失败自动变异 Payload 并重试非开环线性2. V4 系统架构10 阶段深度闭环流水线Stage 1: 侦察指纹识别 (recon) → WAF 类型 框架指纹 技术栈 Stage 2: 种子解析 知识图谱增强 → seeds_db.json (50 种子 × 4 语言) Stage 3: 优化查询生成 (query_gen) → CodeQL .ql P1 MVC-k3 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 漏洞报告flowchart TD S1[Stage 1 侦察指纹识别] -- S2[Stage 2 种子解析 知识图谱增强] S2 -- S3[Stage 3 优化查询生成] S3 -- S4[Stage 4 CodeQL 扫描 / Semgrep P1 降级] S4 -- S5[Stage 5 CodeQL 深度分析] S5 -- S6[Stage 6 符号约束匹配 Z3 知识图谱] S6 -- S7[Stage 7 RL 策略 Payload 生成] S7 -- S8[Stage 8 反馈闭环 RL 验证] S8 --|验证失败 且 轮数小于 max_rounds| S7 S8 --|验证成功 或 达到最大轮数| S9[Stage 9 知识进化 报告生成] S9 -- OUT[Markdown 漏洞报告 种子自学习]图注Stage 1 输入目标 URL输出 WAF 与框架指纹Stage 2 输入种子库输出 seeds_db.jsonStage 3 输出 CodeQL 查询与 P1 taint 规则Stage 4 输出 SARIF 路径Stage 5 输出带 in_branch 标记的 flow_stepsStage 6 输出 P0 可达性结论Stage 7 输出候选 PayloadStage 8 输出验证结果失败则回退 Stage 7 变异重试Stage 9 汇总证据生成报告。V4 新增核心模块模块文件职责V4 主控制器src/orchestrator_v4.py10 阶段深度闭环流水线编排符号执行引擎src/symbolic_executor.pyZ3 约束求解路径条件提取与可达性分析5 秒超时降级CodeQL 深度分析src/codeql_deep_analyzer.pyP1 MVC-k3 taint step 注入 SARIF 后处理RL 反馈闭环src/feedback_loop.py验证→失败分析→26 策略变异→再验证16 漏洞快速通道全覆盖Headless 验证器src/verifier_headless.pyPlaywright 浏览器验证 DOM XSS/CSRF/CORS侦察指纹src/recon.py300 指纹特征10 WAF 20 框架P1 Semgrep 规则rules/p1_mvc/*.yaml4 语言 × 16 漏洞 64 条 MVC-k3 跨层规则5 P0 3 P1 8 原漏洞快速验证通道src/verifier_v2.py16 漏洞专用验证器5 P0 NoSQL/Deserial/Upload/Unauth/InfoLeak 3 P1 SSTI/Redirect/Code 8 原漏洞靶场 Mock 服务mvc-targets/*/app_mock.py4 靶场 × 16 漏洞 64 个完整漏洞模拟环境NoSQL/Deserial/Upload/Unauth/InfoLeak/SSTI/Redirect/Code 8 原3. V4 核心技术P0路径敏感分析Z3 约束求解传统数据流分析不区分条件分支会产生大量不可达路径导致误报。V4 引入 Z3 SMT 求解器flow_steps 中 in_branchTrue 的步骤 → 提取 if/switch/ternary 条件表达式 → Z3 求解是否存在输入满足所有分支条件 → 无解(unsat) → sink 不可达 → 降分 40 → 有解(sat) → 记录示例输入供 Payload 生成用效果自动过滤不可达路径大幅降低误报率。P1MVC 上下文敏感 k3支持跨 Controller→Service→DAO/Sink 三层数据流追踪Semgrep 精准规则覆盖 4 种语言 × 16 漏洞类型5 P0 3 P1 8 原。RL 反馈闭环验证验证失败 → 分析原因(payload_invalid / 无响应 / 特征不匹配) → 26 变异策略(编码/截断/嵌套/大小写/注释/分隔符...) → 重新发送验证 → 最多 2 轮(可配置) → 成功则记录 confirmed_byrl_mutation4. 快速开始环境要求Python 3.9Node.js 16运行靶场用CodeQL CLI 2.19代码分析引擎可选SemgrepP1 MVC-k3 降级引擎必装Z3 Solverpip install z3-solverP0 路径敏感分析安装git clone https://gitee.com/nights-shadow/ChainForge.git chainforge cd chainforge pip install -r requirements.txt 安装 Semgrep必装 pip install semgrep 安装 Z3 SolverP0 路径敏感分析 pip install z3-solver 安装 CodeQL CLI可选JS/Java/Python 可用 CodeQLPHP 用 Semgrep 下载地址: https://github.com/github/codeql-cli-binaries/releases 安装 PlaywrightHeadless 验证可选 pip install playwright playwright install chromiumWeb UI 可视化界面推荐# 启动 Web UI默认 http://127.0.0.1:5000 python cli.py web 自定义端口和主机 python cli.py web --port 8080 --host 0.0.0.0一键运行V4 全流程# V4 完整 10 阶段流水线含 P0 路径敏感 P1 MVC-k3 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实战演示以 js-nest-mvc 靶场为例下面以js-nest-mvc靶场端口 3000为例完整跑一次 V4 流水线。先启动靶场再执行主流程# 终端 1启动 js-nest-mvc 靶场 cd mvc-targets/js-nest-mvc npm install node app.js # [mock] js-nest-mvc listening on http://127.0.0.1:3000 终端 2执行 V4 完整 10 阶段流水线 python3 -m src.orchestrator_v4 --target ./mvc-targets/js-nest-mvc --lang javascript --url http://127.0.0.1:3000 --max-rounds 2关键输出日志各阶段摘要行[Stage 1] recon → frameworkNestJS, wafnone, techNode.js/Express-like [Stage 2] seeds → loaded 52 seeds, matched 16 for javascript [Stage 3] query_gen → generated 16 CodeQL queries 16 P1 MVC-k3 taint rules [Stage 4] codeql → SARIF paths41, P1 confirmed16 (rules hit 12/12) [Stage 5] deep_analyze → flow_steps41, in_branch marked23 [Stage 6] z3 → sat31, unsat10 (unreachable filtered, score -40) [Stage 7] payload_gen → candidates31, with z3 sample input18 [Stage 8] feedback → round1 confirmed13/31, round2 mutated18 → confirmed18/18 [Stage 9] report → confirmed31, reportreports/js-nest-mvc.md, seeds_evolved6如何从输出中定位关键结论P0 可达性看[Stage 6] z3行的sat与unsat计数unsat即被 Z3 判定为不可达、已降分 40 的路径sat才是进入 Payload 生成的有效路径。RL 变异成功看[Stage 8] feedback行的round2 mutated与confirmed若第二轮确认数大于第一轮说明变异策略生效报告中对应条目会带confirmed_byrl_mutation。最终结果[Stage 9] report行的confirmed为最终确认漏洞数明细见reports/js-nest-mvc.md。支持的语言参数--lang javascript # Node.js Express/Koa/Nest --lang python # Flask/Django --lang php # Laravel/原生 PHP --lang java # Spring Boot5. 靶场测试结果4 个 MVC 靶场 × 16 漏洞类型 64 个已知漏洞点100% 通过靶场语言端口Verifier 直测Feedback 闭环js-nest-mvcJavaScript300016/16 100%8/8 100%py-flask-mvcPython500016/16 100%8/8 100%php-laravel-mvcPHP800016/16 100%8/8 100%java-spring-mvcJava808016/16 100%8/8 100%合计4 语言—64/64 100%32/32 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 21 | head -5, success_jump: -1, fail_jump: -1 } ], pre_conditions: [], waf_bypass: bash 花括号展开绕过; 注释截断, environment: LinuxNode.jsExpress }配置说明config.yaml关键配置项codeql: path: codeql language: auto query_suite: security-extended seeds: raw_dir: seeds/raw db_file: seeds/parsed/seeds_db.json 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/安全声明与合法使用本工具仅供授权的安全测试使用。使用者需确保仅对已获得书面授权的目标进行测试遵守当地网络安全法律法规不对未授权目标执行动态验证发送 HTTP 请求发现漏洞后遵循负责任的披露流程作者不对任何滥用本工具的行为承担责任。技术栈CodeQL 2.19— ASTSSA 静态分析引擎Semgrep— P1 MVC-k3 跨层数据流追踪引擎Z3 Solver— P0 路径敏感分支可达性约束求解Playwright— Headless 浏览器前端漏洞验证Python 3.9— 核心实现语言requests— 动态验证 HTTP 客户端Flask— Web UI总结与后续规划V4 把「种子驱动」的思路贯穿到静态分析与动态验证的每一个环节核心能力可以概括为以下四点种子驱动50 结构化种子覆盖 4 语言 12 漏洞类分析逻辑与 Payload 生成全部源于种子解析新增漏洞类型只需补种子。P0 路径敏感引入 Z3 SMT 求解器对in_branch条件求解unsat路径直接降分 40从源头过滤不可达路径带来的误报。P1 MVC-k3跨 Controller→Service→DAO/Sink 三层追踪Semgrep 规则覆盖 4 语言 × 16 漏洞类型弥补单层数据流分析的断链问题。RL 反馈闭环验证失败后自动分析原因并执行 26 变异策略重试最多 2 轮成功条目记录confirmed_byrl_mutation。在 4 个 MVC 靶场 × 16 漏洞类型的验证中Verifier 直测与 Feedback 闭环均取得64/64 100%的通过率说明「静态定位 路径敏感 闭环验证」这条链路是可行的。后续规划方向扩展漏洞类型在现有 16 类基础上补充 SSRF、XXE、原型链污染、JWT 越权等场景同步扩充种子库与 P1 规则集。支持更多语言与框架优先补齐 GoGin/Echo、C#ASP.NET Core、Ruby on Rails 的 MVC-k3 规则与靶场环境。接入 CI/CD提供 GitHub Actions / GitLab CI 模板与 SARIF 输出让流水线在每次提交时自动跑 P0/P1 分析并把确认结果回写为代码扫描告警。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑