用途:在安全扫描的 finding-discovery 阶段,以威胁模型为背景,调查拟议代码或代码变更中技术上可能成立的安全漏洞,产出候选发现。标准与深度发现 worker 使用各自协调提示,不调用本技能;若用户明确要求独立的仓库发现,则直接对已授权源码套用相应清单,不运行仅 diff 工作流。
主要能力与用法:先读取 ../../references/artifact-storage.md 并遵循其存储策略;路径引用为默认位置,用户显式提供路径时以用户路径为准,缺少必需输入时停止并询问。读取 ../../references/security-guidance.md 解析适用策略后再检查每个源文件。若运行中的 diff 扫描已通过 list_codex_security_review_items 提供文件清单,直接审查并用 record_codex_security_discovery_candidates 记录候选,不生成排名清单、逐发现台账、发现回执或发现报告。无紧凑清单的定向 diff:读取 ../security-scan/references/scan-artifacts-and-ledger.md,用 generate_rank_input.py make-diff-rank-input 生成 rank_input.jsonl(PR/commit/分支用 --mode revisions,本地补丁用 --mode local-patch),再用 launch_codex_security_mcp --helper copy-deep-review-input 复制为 deep_review_input.jsonl;Windows 用 PowerShell 复制命令保留字面路径。diff 扫描在深度审查前不排名或丢弃变更文件。仅当仓库证据表明需要时,加入理解变更安全行为所必需的直接支撑文件。
发现清单要点:用工具检查变更文件及其最小支撑文件;不轻信提交信息;追踪变更代码链对授权、信任边界、危险 sink 或安全控制的影响;按不同根因区分发现族,独立可达实例各自成候选;共享 helper、守卫、路由、模板或 sink 包装变更时扩展到直接受影响的兄弟调用点;关注攻击者可控输入、失效执行或新引入/可达的危险 sink;保持锚定 diff 与支撑文件。对 advisory 种子扫描保留行 id、文件、行、source、sink 或失效控制提示;同一 CWE 邻近发现不能替代种子行。危险 sink 多调用点、重复模板、查询构造器、解析操作、认证/对象端点、共享 helper 调用者各自独立可达时,每个易受攻击文件与 sink/控制行单独成候选;跨包装器进入共享 sink/控制 helper 时两处都列入。具体操作、策略、转换器、校验器或处理器子类选择攻击者可控语义并委托到共享失效控制或 sink 时,该子类方法或构造函数与共享 helper 一并列为受影响位置。声称影响“所有/每个/任何”具体实现时,枚举使该声明成立的具体实现。宽泛候选桶(如所有 SQL 触发器变体、反序列化变体、路径遍历 helper、SSRF 模式、生成框架适配器、未认证变更端点)在交给验证前按具体导出函数、路由分支、sink 语句、API 模式、解析/反序列化变体或受保护动作拆成子候选。同一路由或 helper 暴露多个同族危险操作(execute/executemany/executescript、pickle.load/pickle.loads/yaml.load/yaml.load_all、独立路径/文件 helper、insert/select/delete/update 查询构造器、无认证的 create/delete/reset/admin/job 动作)且可独立触发时,各自成候选。共享或生成包装器是可达性证据,不用于合并子 sink 变体。种子边界包、类族或漏洞族保持开放直到该精确包或类族关闭。提供 CVE、GHSA、advisory、release、issue 或包版本上下文时,将 advisory 种子研究产物作为发现输入,保留种子研究的文件/函数/类/hunk 为台账行,直到本地代码证据将其关闭为可报告、已抑制、不适用或延后。advisory 类别笼统时,先从 advisory/修复/发布/安全测试来源推导种子短名单,否则对项目特定协议、解析器、校验器、工具与版本/比较 helper 及 CVE/advisory 术语做本地回归种子遍历。发现打开或 grep 种子目标文件、类、包或 hunk 时,为其创建显式关闭行。advisory 主导行不得用邻近热点替换精确种子构造。共享反序列化、类解析、模板与认证控制中,当下游传输或调用者证明可达时,解析器/过滤器/允许列表/拒绝列表/守卫行作为候选位置。反序列化与对象构造族枚举解析器或序列化配置注册的具体 codec、反序列化器、转换器与容器处理器,含数组、集合、映射、bean、枚举、throwable 与泛型对象处理器。文件格式对象模型枚举转换或遍历攻击者可控文档结构的原始/容器 helper,含 toArray、get、getObject、数值转换、parse*、迭代器、size、未检查转换与分配循环。仓库级工作清单或覆盖台账识别不可信格式的中心对象模型包时,将该包的数组、字典、节点、集合与原始转换 helper 列为发现行。对象模型 helper 扫描先创建强制发现行,仅在畸形或对抗输入可能到达且缺失类型、大小、形状、递归、数值或转换守卫可致崩溃、拒绝服务、解析器混淆、授权绕过等具体安全影响时升级为可报告发现。不可信远程、协议、文档、归档或包输入可到达缺失守卫并中止服务、请求 worker、解析管道或安全协商时,不得以健壮性为由抑制确定性解析器/helper 崩溃;抑制需精确遏制证据。结构化补丁/编辑/应用 API(JSON Patch、Graph Patch、文档编辑、配置变更)枚举请求选择的具体操作 add、remove、replace、move、copy、test,操作特定路径变换、数组追加、通配选择或对象绑定行在馈入共享求值器或绑定器时保持候选可见。具体操作类检查专用 helper 而非仅顶层 perform/handle/apply 覆盖。操作有追加、通配、回退、copy/move from、默认值或类型解析等特殊分支时,分支谓词与分支局部变换行在绕过或收窄共享校验器时列为受影响位置。类过滤、允许/拒绝/黑/白名单或解析器逻辑在核心、服务端、客户端、远程、插件或导入包重复时,将运行时/导出等价物列为候选位置。框架或库扫描中,存储的客户端、租户、应用、身份提供者、异常或导入配置值在后续渲染、求值、解析或用于授权且存在从应用、租户、身份提供者、导入或其他边界的合理运行时路径时,属跨边界输入;不得仅因写入方在当前仓库外而抑制,除非仓库证据证明该值在正常部署中仅受信任。SQL/NoSQL/LDAP/XPath 等查询 API 不得仅因端点已接受用户可控数据、操作是插入/更新或后续业务检查看似限制最终效果而抑制;攻击者可控输入经合理运行时路径到达查询语法或选择器操作符时,将候选带入验证并记录后续检查为可能反证。不得仅因共享路由或 helper 而合并不同高影响证明元组;sink、最近控制或影响不同时,拆分命令执行、SSRF、路径/文件影响、XML/解析器行为、XSS/模板执行与授权/状态变更影响。出站请求面(downloadFrom、URL 导入器、webhook/回调客户端、预览/渲染获取器、跟随重定向 HTTP 客户端)枚举每个攻击者可控目标来源及其最近允许/拒绝/过滤/重定向控制;不得因抓取/回调是预期功能、过滤器可选或默认空、或兄弟路由发现更响文件/路径问题而抑制 SSRF;用户输入可选目标且硬边界不完整、由操作者配置或仅请求前时保留网络行。XML/解析器/反序列化面独立枚举默认解析器工厂、转换器、校验器、变换器、unmarshal/parse 调用与处理器入口;安全兄弟解析路径是该兄弟的阴性对照,不是不同默认工厂或转换器的抑制证据。命令/动作运行器在关闭命令注入覆盖前枚举每个攻击者可控参数类型与执行模式;类型安全映射、不安全类型拒绝列表、模板替换、shell 包装、直接执行分支、webhook/API 参数摄入与仅前端控件约束视为独立控制;覆盖 raw、url、email 的拒绝列表不关闭 password、checkbox、confirmation、choice 或其他 nil/no-op 类型检查分支,这些仍可渲染进 shell 命令。XML 解析器与转换器候选在加固为尽力而为、失败开放或不完整时,纳入特性设置与解析器行;仅 FEATURE_SECURE_PROCESSING、吞掉/记录 setFeature 失败或安全默认解析器,不抑制调用者提供的解析器工厂/读取器或从不可信数据创建 SAX/DOM/StAX/Transformer 源的转换器路径。
限制:本技能仅用于发现候选,不做验证或攻击路径分析;须锚定 diff 与直接支撑文件,避免漂移到无关仓库扫描;具体收费、价格、平台与效果资料暂未提供。