来源说明:本文依据 Awesome QA Skills 的 Secrets-Exposure Review Prompt 和 Skill 整理;“最佳实践”部分将其中的证据、授权和关闭要求归纳成检查清单,具体判断仍以项目策略为准。

密钥不出现在源码里,也可能泄露。配置快照、调试日志、崩溃报告、构建产物和复制的环境文件都会形成不同暴露路径。

为什么需要这个 Skill

敏感信息暴露审查 Skill 用有证据边界的方式检查密钥在哪里、如何流转、日志暴露了什么、哪些配置边界重要,以及是否有轮换证据。

Skill 用来做什么

复核结果应指出下一步安全检查,同时避免扩大信息暴露。

当你要用脱敏材料复核服务或流水线时,使用这个 Skill。它识别暴露风险和验证动作,不会登录、调用真实 API、读取凭证,也不会宣布系统安全。

好的发现需要写清密钥类别、位置或流转、暴露触发、证据状态、影响、优先级、负责人、关闭条件和隔离验证方式。

当凭证要从本地开发进入 CI、准备修改日志、需要限定一次安全事故复核,或轮换是否就绪不清楚时,使用这个 Skill。

它不做什么

敏感信息暴露审查 Skill 可以整理凭证可能暴露的位置、相关证据和下一步动作,但它不能替代:

  • 业务或领域负责人对规则、范围和风险的确认。
  • 真实环境、账号、数据、日志或运行结果;静态分析不会自动升级为运行证据。
  • 发布、合规、生产操作和残余风险接受等授权决定。
  • 在输入相互冲突时替团队选择一个未经确认的事实。

它主要检查哪些内容

先沿着配置、流水线、日志和产物盘点敏感信息的位置,再追踪其用途、可见范围与轮换证据:

检查关注点开始前要问结果应留下什么
候选暴露路径密钥可能存储、流转或输出在哪里脱敏来源与证据状态
流转发现密钥如何经过配置或运行时触发与边界
轮换就绪度什么可以证明替换和回滚安全操作手册、负责人或缺口
验证动作降低不确定性的安全隔离检查不访问真实凭证

如果某一行只有经验判断、没有来源或验证方法,就把它留在待确认项里,不要提前写成通过。

开始之前先审计输入

开始复核候选暴露路径前,先把输入分成六种状态。缺口不会自动变成失败,但也不能被隐藏在结论里。

状态含义本 Skill 的处理方式
known材料直接证明的事实标出来源、版本和时间,允许进入判断
missing本轮需要但尚未提供的材料列出最小补证动作,结论保持受限
conflicting来源之间互相矛盾并列来源和冲突点,交给负责人裁决
stale材料存在但版本或时间已经过期标出新鲜度,不把旧结论当当前事实
out_of_scope有关但不在本轮范围内明确排除,避免分析悄悄扩大
assumptions为继续分析而暂时采用的假设写出验证方式和失效条件

至少把输入版本、范围、环境、证据位置和负责人放在一起。没有运行记录时,只能交付分析、设计或验证计划,不能写执行通过。

从问题到结构化发现

先把来源、范围、证据状态、分析判断、责任角色、动作、关闭条件和验证方式连起来,再写结论。下面的案例保留这个 Skill 的专属编号和领域语境。

分层写法

以“CI 失败日志是否保留 Authorization 请求头”为例,不要把四种判断揉成一句“建议通过”:

层次写法本文应用
事实材料直接显示了什么引用来源中的重点、版本、输入或运行记录
基于证据的推断多个事实共同支持的判断说明推断链,并保留不确定性
建议下一步最小动作是什么指定补证、复核、执行或回归路径
人工决策谁需要决定什么由负责人确认范围、风险接受、资源和发布含义

一个完整案例

本节按输入、分析、发现、决策和验证展开;材料不足时保留 missing、conflicting 或 assumptions,不把它们改写成通过。

输入

材料这次提供什么缺失时的处理
范围与版本服务、仓库、流水线、环境和变更修订未知边界要标出
脱敏材料配置模板、日志样例、部署清单和密钥引用不要附真实值
密钥流转创建、注入、使用、记录、异常处理和撤销路径事实与假设分开
轮换证据负责人、周期、依赖影响、模拟运行和回滚材料没有证明时保持未评估

可以这样调用:

请使用 secrets-exposure-review Skill。

任务:复核日志改造期间,支付服务是否可能通过 CI 日志、异常 Trace 或部署配置暴露 API 凭证。
输入材料:[脱敏清单、日志样例、流水线步骤、密钥引用和轮换 runbook]
范围:[staging 与 CI,不使用真实凭证]
限制:[不调用 API、不读取密钥值]

分开已知暴露证据、假设、候选验证、影响、负责人、关闭条件和安全决策边界。

分析

先根据输入、检查矩阵和证据状态整理判断,再进入发现;缺失材料保留为缺口。

发现

聚焦例子:复核日志改造,不要复制凭证

新的异常日志器把请求头写入 CI 失败输出。这个 Skill 应指出 Authorization 请求头可能暴露,追问写入前是否脱敏,并建议在隔离流水线用合成令牌验证。不能索要生产令牌,也不能调用支付供应商。

可将候选项记为 SER-01。下表沿用这个假设场景;真实凭证的有效性、日志保存范围和影响都需要材料确认。

字段示例记录
对象与来源CI 失败输出中的 Authorization 请求头;记录流水线版本、日志位置和时间,不复制头部值
候选类别与指纹认证凭证候选;仅保留脱敏标记或安全指纹,模式匹配不能证明凭证真实或有效
触发与暴露范围异常路径将请求头写入输出;日志可见范围、保留期限及是否被复制尚待确认
证据状态本例假设日志器会写入请求头;凭证值、用途和可访问范围仍为 missing / unassessed
下一步动作先确认并限制日志暴露,再由凭证负责人判断是否需要撤销或轮换;检查旧值失效和历史副本处理证据
安全验证在隔离流水线用合成令牌确认脱敏和失败输出;保存配置版本、原始测试输出与清理记录,不接触真实凭证

删除日志文本本身不等于凭证失效,也不能据此宣称暴露已经关闭。是否撤销、轮换以及如何处理历史副本,需要凭证负责人依据暴露证据决定。

复核可以分类脱敏证据并提出安全验证,不能证明没有密钥、漏洞利用成功、修复完成或安全通过。

示例发现:把一次问题写成可交接动作

下面的字段示例只展示记录方式,不代表真实环境已经执行。

假设当前材料不能确认 CI 失败日志是否保留了 Authorization 请求头,可以这样记录发现。它既不替团队补写规则,也不把缺失证据伪装成失败。

字段示例写法
来源与范围记录相关需求、流水线版本、CI 环境和日志保存规则
发现当前材料不能确认请求头是否在写入前脱敏,也不能确认日志的可见范围
证据状态missing / assumptions;如果来源相互矛盾则改为 conflicting
影响与优先级说明会影响哪个用户、链路或交付决定,不凭感觉扩大等级
负责人和人工决策由业务、开发、安全或测试负责人确认规则和风险取舍
动作与关闭条件补齐最小证据;关闭条件是来源、判断和责任人都能复核
验证指定一次可重复的检查、查询或运行,并保存原始产物

这张记录应让接手者能从脱敏位置追到凭证用途和生命周期动作,而不需要查看凭证值。

决策

是否撤销或轮换凭证,以及怎样接受仍保留的历史副本风险,应由凭证负责人根据暴露范围决定。

验证

关闭前按发现中的验证方式执行,并保留原始产物;没有执行记录时,状态仍然保持未验证。

发现如何进入下一阶段

交接产物

产物要回答的问题示例状态
候选暴露路径密钥可能存储、流转或输出在哪里脱敏来源与证据状态
流转发现密钥如何经过配置或运行时触发与边界
轮换就绪度什么可以证明替换和回滚安全操作手册、负责人或缺口
验证动作降低不确定性的安全隔离检查不访问真实凭证

每条结论都应该能回到来源、证据状态和下一步动作。材料不足时使用 pending、blocked、未评估或 NOT_SCORED,不要用自信填空。

下一步路由

至少交付来源、证据状态、负责人、关闭条件和验证动作;下一阶段的结论仍受证据状态约束。

怎样准备更好的输入

提供脱敏配置、日志样例、流水线步骤、密钥引用名、环境边界、轮换负责人和验证环境。真实值应留在提示词和仓库之外。

交接时至少保留输入版本、范围、时间窗口、证据索引、假设、人工决策边界和最小验证动作。

和其他 Skill 怎么配合

最佳实践

  • 优先检查影响大、又难以发现的暴露路径,尤其是涉及敏感数据或高权限的情况。开始前写清服务、环境、版本和时间范围。
  • 只使用脱敏材料或合成凭证,遵守最小权限。需要候选验证时,使用隔离环境和可回滚的测试数据;该复核流程不会登录系统、调用真实 API 或读取真实凭证。
  • 把事实、基于证据的推断、建议和人工决定分开记录。输入缺失、冲突、过期或包含假设时,都要标明。
  • 每条发现都保留可复核的来源、暴露触发、影响、负责人、关闭条件和安全验证方式;没有运行证据时不要写成验证通过。
  • 交付前检查结果中没有真实凭证,并写明证据由谁保留、何时清理,以及谁负责轮换决定。

容易踩的坑

  1. 只搜索字面值,就认为系统安全,忽略派生形式或日志输出。
  2. 把轮换文档当成所有消费者都能加载新凭证的证明。
  3. 为了复核完整而请求真实凭证。

安装与调用

npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/secrets-exposure-review

安装说明与排查方式:

请使用 secrets-exposure-review Skill。
提供目标、范围、版本、证据路径、限制和决策边界。
先审计输入,保留证据状态,最后给出负责人、关闭条件和验证方式。

FAQ:常见问题

可以贴真实令牌让复核更准确吗?

不可以。使用脱敏值或合成令牌;真实凭证会增加暴露,而且超出这个 Skill 的边界。

静态扫描干净就代表轮换就绪吗?

不代表。轮换还需要消费者重新加载、撤销、回滚和安全验证路径的证据。

参考

静态计划、文件存在和模拟运行保留原有证据状态,不能变成运行时证明、全部通过结论或发布批准。

分享