SuperAPI AI 工具集

finding-triage

安全与审计

查看项目

更新于 10-15 13:54

技能介绍

用途

Finding Triage 是一个针对单个安全发现的分诊技能。仓库中其他技能负责产生发现,本技能负责闭环:判断某个发现是否真实、在具体环境中应属何种严重性、以及应当如何处理。最终输出是一份可直接建单的完整书面记录,包含正确字段、充分理由,以及六个月后仍能经受监管者审阅的审计轨迹。

处置方式与 owasp-audit 的 Three-Disposition 规则一致:Fixed(已修复)、Deferred(延期)、Accepted Risk(接受风险)。误报是第四种,但它不是对真实发现的处置,而是判定“不存在该发现”。

本技能适用于任何来源的发现:SAST 输出、DAST 扫描器、依赖公告、人工审计、威胁狩猎命中、渗透测试报告、厂商披露、内部红队记录、漏洞赏金提交。

交叉引用:

  • vuln-research:为可达性评估提供 CVE 技术深挖
  • owasp-audit 的 Three-Disposition 规则:本技能按单条发现实现的框架
  • security-comms:当发现需要离开安全语境时,将处置记录转写为利益相关者可读的语言
  • 任何审计技能:本技能消费其发现作为输入

主要能力

工作流由智能体与用户共同推进,在用户掌握发现本身未揭示的上下文时,应停下并提出澄清问题。

第 1 步 — 用自己的话复述发现

若发现来自扫描器,复述其实际主张,以过滤模板化噪音。好的复述应包含:问题是什么(具体弱点,如适用给出 CWE)、位于何处(file:line、端点、资源 ARN、主机)、如何被利用(前置条件、所需攻击者能力)、被利用后的影响(数据丢失、权限提升、可用性)。若无法清晰复述,说明尚未理解,应向用户询问上下文。

第 2 步 — 这是否真实

按数量计,自动化扫描器发现中约一半是误报。分诊问题包括:所描述的易受攻击代码路径是否存在(否则为误报);该路径是否可从攻击者可控输入到达(否则严重性下降);利用前置条件是否匹配环境(否则严重性下降或为误报);是否有公开 PoC 或已被野外确认(有则严重性维持或上升);现有控制(WAF、认证、网络分段)是否阻止利用(是则严重性下降,控制本身成为缓解措施)。

常见误报模式:SAST 标记测试文件或死代码;依赖扫描器标记仅存在于 devDependencies 的包(运行时不可达);DAST 标记真实环境中返回 404 但被 SPA 路由混淆的路径;过时公告(厂商在 CVE 前已静默修复,当前版本已含修复);模式匹配到看似脆弱但位于从未被调用函数内的代码。误报判定应与真实发现一样认真记录,以便未来扫描器或审计者复用。

第 3 步 — 结合上下文的严重性

扫描器的 CVSS 或严重性评级只是起点。提高严重性的因素:端点面向互联网而非内网;认证前置条件在本应用中易于满足(如开放注册);涉及受监管数据(PII、PCI 持卡人数据、PHI);存在公开 PoC 或观察到活跃利用;脆弱组件处于关键路径;补偿控制缺失或薄弱。降低严重性的因素:代码路径在使用中不可达;存在强补偿控制;利用前置条件在本环境不存在;认证前置条件在本应用中较难满足;组件仅用于开发或构建、运行时不可达。

常见严重性分级:Critical(预认证或极易利用,立即数据丢失/RCE/接管,24-72 小时内修补);High(需认证但权限极低,或认证后可达重大影响,1-2 周内修补);Medium(需有意义权限或利用链,现实但不简单,30 天内修补);Low(纵深防御,难以串联,90 天内修补);Info(加固或卫生问题,已记录行为,方便时修补)。

第 4 步 — 选择处置方式

  • Fix now(同义 Fixed):补丁或缓解可在该严重性的 SLA 内完成。必填字段:修复描述、部署计划、验证方法。
  • Defer:严重性需要行动,但运营约束使立即修复不可行。必填字段:延期原因、新截止日期、负责人、条件变化时的告警。
  • Accept risk:当前配置下不计划修复。必填三项:为何修复不适用、补偿控制、重新评估触发条件。
  • False positive:并非真实漏洞。必填:判定证据、要抑制的扫描器规则 ID(谨慎使用)。

关于 Defer:决定延期不会改变严重性。记录“High 延期至 Q3”是诚实的;因 Q3 尚远而把 High 降为 Medium 属于风险洗白。关于 Accept Risk:三项字段均为必填,缺少任一项即等于真实发现被静默丢弃;重新评估触发条件最常被遗漏,应指明具体条件(套餐升级、依赖升级、流量模式变化、审计周年)。

第 5 步 — 撰写处置记录

按处置方式使用对应模板生成可直接建单的记录。

Fix 模板字段:Finding 标题、Source、Severity(上下文严重性,并注明扫描器原始评级)、CWE/CVE、Location;What(通俗描述)、Why this severity(上下文推理)、Fix(具体变更:代码 diff、配置更新、依赖升级)、Verification(具体测试:对抗性输入与观察结果,含运行命令与预期行为)、Owner、Target deploy。

Defer 模板字段:标题加 DEFERRED、Severity(不变)、Original target、New target;Why deferred(运营约束)、Risk during deferral window(暴露面与降低控制)、Alerting / conditions that would escalate(何种情况会迫使提前行动)、Owner、Re-evaluation 日期(通常早于新目标)。

Accept Risk 模板字段:标题加 ACCEPTED RISK、Severity、Approver(姓名与角色)、Date accepted;Why fix doesn't apply(成本层级、依赖版本约束、部署拓扑、厂商限制等,需具体)、Compensating controls(逐条列出控制及其降低影响/可能性的原因)、Re-evaluation trigger(具体条件与日历审查日期,至少每年一次)、Approvals(工程负责人、安全、必要时合规/法务,含姓名与日期)。

False Positive 模板字段:标题加 FALSE POSITIVE、Scanner(名称与规则 ID)、Original severity;What the scanner claimed(复述主张)、Why it's not real(具体证据)、Suppression decision(抑制该精确发现、添加允许列表规则(谨慎,宽泛抑制会滋生盲点)、不抑制并在此返回时重新评估)、Determination by、Reviewed by(非平凡抑制需复核)。

第 6 步 — 校验记录

提交前自检:12 个月后的自己或审计者能否在无额外上下文下理解该决定;验证步骤是否具体到他人可复现;Accept Risk 的三项必填字段是否具体而非空话(“已部署标准控制”不算补偿控制);严重性是否反映本环境而非扫描器默认值。

使用方式

本技能以智能体与用户协作的方式运行,按上述六步推进,并在需要用户上下文时提问。主要输出是处置记录本身(使用上述模板)。若一次分诊会话覆盖多条发现或批量导入,则汇总输出:会话标题、Source、Date、Triaged by;Summary 表格(Finding、Original severity、Contextual severity、Disposition);Detail(逐条使用相应模板);Escalations(需高级复核或批准的发现)。

适用场景

适用于对单个安全发现进行稳态分诊与处置,来源包括 SAST、DAST、依赖公告、人工审计、威胁狩猎、渗透测试、厂商披露、红队记录、漏洞赏金等。

限制与边界

  • 本技能仅操作用户有权分诊与处置的发现。
  • 严重性决定与 Accept Risk 处置影响组织风险态势;对 High 及以上发现,应确保所列审批人实际批准,不得伪造签字。
  • 误报判定应基于证据,而非“不想修”的改头换面;若用户想把真实发现标为误报,应提出反对。
  • 拒绝协助为规避披露或审计义务而降低严重性。
  • 若发现揭示活跃事件,应移交 incident-triage;处置分诊面向稳态发现,而非火情。

何时升级

以下发现不应由单个工程师单方面分诊:任何 Critical;任何预认证可利用;任何影响受监管数据(PII/PCI/PHI);任何有公开 PoC 或活跃利用;任何拟处置为 Accept Risk 且严重性为 High 及以上。这些需第二复核人(Tier 3、安全团队或政策指定的审批人)。

参考资料

  • CVSS v4.0 规范 — first.org/cvss
  • EPSS — Exploit Prediction Scoring System(FIRST.org)
  • NIST SP 800-30(风险评估指南)
  • FAIR(Factor Analysis of Information Risk)— 需要以金额计价决策时的定量风险框架
  • ISO 27005 — 风险管理
  • 《Measuring and Managing Information Risk》— Jack Freund、Jack Jones(FAIR 专著)
  • OWASP Risk Rating Methodology