SuperAPI AI 工具集

detecting-secrets

编程与开发

查看项目

更新于 10-15 20:06

技能介绍

用途:在代码库中查找硬编码密钥、审计凭据泄露、检查 API Key,并配合 GitHub 密钥扫描告警进行排查与修复。

主要能力:

  1. 模式识别。高置信度模式包括 AWS 的 AKIA[0-9A-Z]{16}、Google 的 AIza[0-9A-Za-z_-]{35}、以 apiKey/api_key 命名的变量、连接字符串(Server=...;Password=...、mongodb://user:pass@host、postgres://user:pass@host)、私钥(-----BEGIN RSA PRIVATE KEY-----、-----BEGIN OPENSSH PRIVATE KEY-----)、令牌(ghp_ 开头的 GitHub PAT、xoxb- 的 Slack bot、sk- 的 OpenAI)、以 password/passwd/secret/credential 命名的变量、含密码的 PFX/P12 与含私钥的 PEM。低置信度模式需结合上下文判断,包括配置中的 Base64 字符串、JWT、32 位以上十六进制串、内嵌凭据的 URL。
  2. 上下文判断。区分真实密钥与误报:测试目录(/test/、/tests/、/*.Test/)中的值、含 test/fake/mock/example/placeholder 的占位值、断言或 mock 中的值通常不是真实密钥;bcrypt($2b$)、argon2($argon2id$)等哈希值不是密钥,但硬编码的加密密钥本身是密钥。
  3. 常见藏匿位置。appsettings.json、.env、web.config/app.config、docker-compose.yml/Dockerfile、CI/CD 文件(.github/workflows/*.yml)、测试种子脚本与迁移文件、注释与 TODO、默认参数值、常量文件。
  4. GitHub 密钥扫描集成。可用 gh api 列出告警、查看单个告警详情、筛选绕过推送保护的告警: gh api /repos/{owner}/{repo}/secret-scanning/alerts --jq '.[] | {number, state, secret_type, secret_type_display_name, created_at, push_protection_bypassed}' gh api /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number} gh api "/repos/{owner}/{repo}/secret-scanning/alerts?state=open" --jq '.[] | select(.push_protection_bypassed == true)'
  5. 修复流程。发现密钥后依次:立即轮换(撤销旧凭据、生成新凭据、更新使用处);从代码移除,改用环境变量或密钥管理服务;必要时用 git filter-repo 清理 Git 历史(如 git filter-repo --path-glob '*.json' --replace-text expressions.txt,expressions.txt 格式为 literal:the-secret-value==>REDACTED);通过 .gitignore、推送保护、自定义扫描模式防止复发。

使用方式:作为技能在用户提出查找硬编码密钥、审计凭据泄露、检查代码中的 API Key 等请求时触发,按上述模式与位置进行扫描,并结合上下文验证后再告警。

适用场景:代码安全审计、提交前检查、CI/CD 密钥扫描告警排查、凭据泄露应急响应。

限制与规则:任何已提交的密钥都应视为已泄露,即使仓库私有也必须轮换;不得在未轮换的情况下关闭扫描告警;检测需验证而非仅匹配;需检查完整提交历史(如 git log -p -S "secret-pattern");Bitwarden 使用 Azure Key Vault 管理密钥,新密钥需与 BRE 团队协作开通访问。具体平台支持与收费信息暂未提供。