| 正例 | “审计这个 Spring 项目的 MyBatis ${} 是否有 SQL 注入。” | 触发,读取 MyBatis reference,追踪参数来源和白名单后输出 SQL 审计报告 |
| 正例 | “route-tracer 说 /user/search 参数到达 UserDao.search,判断 SQL 注入是否成立。” | 触发,读取 tracer 证据,验证 DAO/Mapper 实现后判定 |
| 正例 | “只有 WAR 包,帮我看 DAO 里有没有 SQL 拼接。” | 触发,读取反编译策略,先定位 SQL 相关 class |
| 反例 | “列出所有 Controller 路由和 Burp 请求模板。” | 不触发,使用 java-route-mapper |
| 反例 | “追踪 /api/download 参数到文件读取 sink。” | 不触发或只作为下游交接,使用 java-route-tracer/文件读取 skill |
| 反例 | “检查 Spring Security 是否缺少鉴权。” | 不触发,使用 java-auth-audit |
| 边界例 | Manager.save(bean) 名称像数据库保存,但没有实现源码 | 不下 SQL 结论,标记缺实现/需反编译 |
| 边界例 | Mapper XML 中有 ${column},Java 层 column 来自固定 enum 映射 | 记录高风险模式但判为有白名单保护或非漏洞 |
| 边界例 | SQL 拼接只在 Oracle 分支,目标数据库未知 | 标为环境依赖/待验证,不写确认漏洞 |
| 边界例 | sql.xml 模板有 {0},但未定位 MessageFormat.format 或消费方 | 写不可确认,不把 {0} 当已执行拼接 |
| 失败案例 | 把所有 ${} 命中都写成已确认高危 | 不合格,缺入口、可控性和防护分析 |
| 失败案例 | 把 PreparedStatement 值绑定报告成 SQL 注入 | 不合格,误判参数化查询 |
| 失败案例 | 确认漏洞或条件成立项没有 Burp Suite 请求和 payload | 不合格,缺少开发单位复核材料 |
| 失败案例 | 待验证或不可确认项输出可复制 Burp 请求 | 不合格,候选风险被包装成已确认漏洞 |
| 失败案例 | 输出 CVSS、CVE、修复版本、缺少授权/回滚约束的破坏性 payload 或模型自检章节 | 不合格,违反输出边界 |
| 失败案例 | 把过滤器未启用写成 SQL 操作映射里的非漏洞,导致统计数量和映射状态不一致 | 不合格,统计口径错误 |
| 失败案例 | 报告写“网络与命令受限”“hard rule 1-3”或列出组件版本/CVE 扫描建议 | 不合格,暴露内部过程或越界 |
| 失败案例 | 同一映射行状态写“非漏洞;动态片段待补证” | 不合格,结论状态混杂 |