先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
旧查询:WHERE id=? AND tenant_id=?;新查询:WHERE id=?;接口接受用户传入的id。
输出
编辑示例 · 未运行
高风险待修复:对象查询丢失tenant_id约束。
触发:已登录用户请求其他租户对象ID。
影响:若调用方没有等效对象权限检查,可能返回跨租户数据。
建议:恢复权限过滤并增加“另一租户ID不可读取”的回归;继续核查调用方是否已有防线。
方法说明
结合差异、调用方、Git 历史和测试覆盖,形成有位置和证据的安全审查报告。 具体任务 审查变更新风险:聚焦认证、权限、资金和外部调用等敏感路径。 追踪影响范围:结合调用方、历史与测试,判断变更会破坏哪些边界。 必需材料 授权仓库与明确diff范围 相关需求和安全约束 可选材料 历史修复记录 现有测试 使用门槛 能读取变更前后代码及调用链,明确本次审查覆盖范围。 这个 Skill 额外提供的方法 把安全检查集中在此次改变的行为上,避免用通用清单淹没关键回归。 编辑示例(未运行) 查询条件删除了租户过滤 任务:为一段变更写安全审查意见 输入: 旧查询:WHERE id=? AND tenant_id=?;新查询:WHERE id=?;接口接受用户传入的id。 结果片段: 高风险待修复:对象查询丢失tenant_id约束。 触发:已登录用户请求其他租户对象ID。 影响:若调用方没有等效对象权限检查,可能返回跨租户数据。 建议:恢复权限过滤并增加“另一租户ID不可读取”的回归;继续核查调用方是否已有防线。 以下为官方编辑构造的示例,未运行上游 Skill。示例是虚构diff;明确前提,不把未追完的调用链写成已确认漏洞。 首次任务 任务:审查变更新风险。 任务重点:聚焦认证、权限、资金和外部调用等敏感路径。 必需材料: - 授权仓库与明确diff范围:[填写或粘贴我的材料;未具备则说明] - 相关需求和安全约束:[填写或粘贴我的材料;未具备则说明] 可选补充: - 历史修复记录:[可填写,未提供不应假定存在] - 现有测试:[可填写,未提供不应假定存在] 请交付有材料依据的分析报告,列出发现、证据、建议与未覆盖范围。仅依据这些材料处理;缺少决定结果的信息时先说明缺口,不补造事实。未执行的检查、修改或外部操作明确标为未执行。 使用前提:能读取变更前后代码及调用链,明确本次审查覆盖范围。 处理边界:静态审查不保证排除全部漏洞;只有证据支持的攻击路径才作为发现,未验证假设要标出 验收要求: 1. 发现对应具体修改和位置。 2. 说明触发前提与影响对象。 3. 报告注明未覆盖代码与验证限制。 验收方法 发现对应具体修改和位置 说明触发前提与影响对象 报告注明未覆盖代码与验证限制 依赖与准备 Git与代码读取工具、完整审查参考;仅处理获授权代码,不自动向外发送报告。 使用边界 静态审查不保证排除全部漏洞 只有证据支持的攻击路径才作为发现,未验证假设要标出 排错 只看diff无法判断:读取调用方、历史修复和相关测试。 发现疑似旧问题:区分本次引入、放大或原有基线问题。 固定来源 https://github.com/trailofbits/skills/blob/0cc1c73a5e96749ab32d7ea5e14892fafa6972ae/plugins/differential-review/skills/differential-review/SKILL.md