关于 secrets-management-audit
Secrets Management Audit 是用于发现泄露凭据并评估应用机密管理方式的安全审计技能。它检查源码、Git 历史、构建产物、日志、配置、CI/CD 和云环境,并记录泄露范围与轮换状态。
主要功能
- 01扫描源码和 Git 历史
- 02检查构建包、二进制文件、日志及 CI/CD
- 03验证发现并评估权限范围
- 04审计密钥托管、轮换和权限
- 05记录位置与轮换状态
适用场景
- 01发布前审计代码仓库
- 02调查疑似凭据泄露
- 03检查机密存储与轮换实践
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill secrets-management-audit安装后在 Claude Code 中输入/secrets-management-audit确认已加载。
附带文件references/secret-hunting.md
详细介绍
密钥管理审计(查找/修复 — 凭据与密钥)
概述
泄露密钥是导致系统遭到入侵的最快途径之一——提交一个密钥就可能让整个云账户落入他人之手。这项技能会查找所有藏匿位置中的暴露密钥,并审计应用是否妥善管理密钥(存入保险库、定期轮换、限制作用范围)。
核心原则: 源代码、历史记录、日志或二进制文件中的密钥都已经公开——应假定其已泄露并立即轮换。只检测、不轮换,纯属作秀。
适用情形 / 跳过情形
- 适用情形: 基本上始终适用——每个应用总会在某处(源代码、Git 历史、日志、环境变量、构建产物、CI)包含密钥/令牌/配置。
- 跳过情形: 基本上从不适用。即使是静态网站,也会有 API 密钥、部署凭据或 CI 令牌。
- 如果确实没有任何内容可扫描: 请明确说明——但要先确认;“没有密钥”往往只是“没认真查找”。
⚠️ 授权
仅限你本人拥有或获授权访问的仓库、产物和基础设施。如果发现真实的暴露密钥,应按安全事件处理:先轮换,再修复泄露途径。
密钥藏匿位置(逐一排查)
| 位置 | 方法 |
|---|---|
| 源代码 | 使用扫描器,并通过 grep 搜索密钥模式 |
| Git 历史 | 从 HEAD 删除的密钥仍会留在历史记录中——扫描所有提交 |
| 前端打包文件 | JS/源映射文件可能会将密钥发送到浏览器 |
| 移动端二进制文件 | 反编译 APK/IPA(apktool/jadx、strings) |
| 日志和错误输出 | 输出到 stdout/日志文件/APM 的令牌/个人身份信息 |
| 配置和环境变量 | .env、配置文件、容器环境变量、云用户数据 |
| CI/CD | 流水线文件、构建日志、已脱敏但仍泄露的环境变量 |
| 云 | 实例元数据、函数环境变量、IaC 状态、配置 |
有关工具和模式,请参阅 references/secret-hunting.md。
方法
- 全面扫描 — 扫描完整 Git 历史、工作树、产物和日志,并使用熵值分析与模式检测器。
- 验证 — 命中项是否为有效凭据?(不要使用第三方凭据;仅以无害方式验证自有密钥)
- 评估影响范围 — 该密钥能解锁哪些资源?其作用范围/权限如何?
- 审计管理方式 — 密钥是否存入保险库、定期轮换、遵循最小权限原则且未写入代码?
- 修复 — 轮换暴露的密钥、清除历史记录、迁移到密钥管理器并添加预防措施。
工具
trufflehog、gitleaks、detect-secrets(包括历史记录与熵值检测);git filter-repo/
BFG(清除历史记录);云密钥管理器/Vault(存储);pre-commit hook + CI 扫描(预防)。
输出
每项发现应包括:密钥类型、位置(包括提交哈希)、有效性、影响范围和轮换状态。 具有高权限的有效密钥属于严重问题——应立即轮换。
交接
攻击链(密钥泄露 → 账户/云环境被接管)→ vulnerability-chaining;修复与预防 →
security-hardening(轮换、存入保险库、限制作用范围、使用 pre-commit/CI 扫描密钥)。
常见错误
- 只扫描 HEAD——已删除的密钥会永远留在 Git 历史中。
- 从代码中删除密钥,却不轮换——密钥已经泄露。
- 在前端/移动端打包文件中发布实际上属于机密的服务密钥,却误以为它们是“公开”密钥。
- 没有预防措施——若不进行 pre-commit/CI 扫描,下周就会出现新的密钥。