章节摘要:前五章我们围着二进制转:Ghidra 打地基、radare2 做脚本化、MCP 把反编译器接进模型。本章换一个视角——大量真实漏洞首先存在于源码里。6.1 节上手 semgrep,从三行 YAML 规则起步,进阶到污点模式与官方规则集,并厘清其 AI 误报分诊的官方口径;6.2 节上手 CodeQL,体验「把代码当数据库查询」:建库、写 QL、用 source 与 sink 描述一条污点路径,理解变体发现为什么能一次查询横扫海量仓库;6.3 节把两台引擎放到同一张桌上对比分工,并与《语义代码检索》划清边界——那边回答「代码在哪」,这边回答「漏洞模式长什么样」。学完本章,你的静态分析从「人眼读伪代码」升级为「规则与查询自动化」,也为第 10 章的 AI 漏洞挖掘备好第一组确定性验证器。
# ch06_overview.txt —— 本章产出的双引擎静态分析工作流 源码仓库 │ ┌──────────┴──────────┐ ▼ ▼ semgrep CodeQL 模式即代码 代码当数据库 三行起步·秒级扫描 建库数分钟·深度污点 │ │ └──────────┬──────────┘ ▼ 告警清单 → 人工与 AI 分诊 │ ▼ 确认的模式沉淀为规则,进入第 10 章方法论
一句话金句:semgrep 用一条规则回答「像不像漏洞」,CodeQL 用一次查询回答「数据到底流没流到」。
(文字流程图)仓库 ──▶ 轻量快筛(semgrep)──▶ 深度污点(CodeQL)──▶ 分诊与确认 ──▶ 规则沉淀。
三节按序读:6.1 建立规则语感,6.2 建立查询语感,6.3 才谈得上选型与组合。
# ch06_logic.txt —— 三节的递进关系:同一目标两种查法,发现互补互证 ┌────────────────┐ 同一目标两种查法 ┌────────────────┐ 发现互补互证 ┌────────────────┐ │ 6.1 semgrep │ ───────────────▶ │ 6.2 CodeQL │ ─────────────▶ │ 6.3 对比与分工 │ │ 快筛·规则语感 │ │ 建库·污点追踪 │ │ 场景化选型 │ └────────────────┘ └────────────────┘ └────────────────┘
6.1 的模式匹配回答「这里像不像」,6.2 的污点追踪回答「可达吗」,6.3 把两者拼成一条流水线:快筛天天跑、深挖定期跑,确认结果交给人工与第 10 章的 AI 流程。
合规声明:本节内容仅用于授权范围内的安全研究与教育目的;未经授权对他人软件进行逆向工程可能违反法律与许可协议。