SuperAPI AI 工具集

security-secrets

安全与审计

查看项目

更新于 10-15 13:58

技能介绍

用途

security-secrets 是一个面向代码库的密钥检测参考技能,用于审查密钥检测模式与扫描工作流。其目标是识别高信号密钥,例如 AWS 密钥、GitHub 令牌和数据库密码。

主要能力

该技能提供一组高信号正则表达式模式,覆盖多种常见密钥类型,包括:

  • AWS Access Key:AKIA[0-9A-Z]{16},固定 20 字符,以 AKIA 开头
  • AWS Secret:(?i)aws(.{0,20})?['"][0-9a-zA-Z/+]{40}['"],40 字符 base64 风格
  • Google API Key:AIza[0-9A-Za-z\-_]{35},共 39 字符
  • Google OAuth:[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com,客户端 ID
  • Google Service Account:"type":\s*"service_account",出现在 JSON 文件中
  • GitHub Token:gh[pousr]_[A-Za-z0-9_]{36,},涵盖 ghp_/gho_/ghu_/ghs_/ghr_
  • GitHub PAT(细粒度):github_pat_[A-Za-z0-9_]{22,},较新格式
  • GitLab Token:glpat-[A-Za-z0-9\-]{20,},个人访问令牌
  • Stripe Secret:sk_(live|test)_[0-9a-zA-Z]{24,}
  • Stripe Restricted:rk_(live|test)_[0-9a-zA-Z]{24,}
  • Stripe Publishable:pk_(live|test)_[0-9a-zA-Z]{24,}
  • Slack Bot Token:xoxb-[A-Za-z0-9-]+
  • Slack User Token:xoxp-[A-Za-z0-9-]+
  • Slack Workflow Token:xwfp-[A-Za-z0-9-]+
  • Slack App Token:xapp-[A-Za-z0-9-]+
  • Slack Webhook:https://hooks\.slack\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[a-zA-Z0-9]+
  • Discord Token:[MN][A-Za-z\d]{23,}\.[\w-]{6}\.[\w-]{27},机器人令牌
  • Discord Webhook:https://discord\.com/api/webhooks/[0-9]+/[A-Za-z0-9_-]+
  • OpenAI Key:sk-[A-Za-z0-9]{48}
  • Anthropic Key:sk-ant-[A-Za-z0-9\-]{32,}
  • Twilio:SK[a-z0-9]{32},API key SID
  • SendGrid:SG\.[a-zA-Z0-9]{22}\.[a-zA-Z0-9]{43}
  • Mailgun:key-[0-9a-zA-Z]{32}
  • Mailchimp:[a-f0-9]{32}-us[0-9]{1,2}
  • Firebase:(?i)firebase[a-z0-9\-]+\.firebaseio\.com,数据库 URL
  • Supabase:eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*,JWT(需检查上下文)
  • Heroku:[hH]eroku.*[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}
  • NPM Token:npm_[A-Za-z0-9]{36},发布令牌
  • PyPI Token:pypi-[A-Za-z0-9_-]{50,},上传令牌
  • Private Key:-----BEGIN (RSA|EC|OPENSSH|DSA|PGP) PRIVATE KEY
  • Database URL:(?i)(postgres|mysql|mongodb|redis)://[^\s]+
  • Password in URL:[a-zA-Z]{3,15}://[^/\\:@]+:[^/\\:@]+@.{1,100},基本认证
  • JWT Secret:(?i)(jwt[_-]?secret|token[_-]?secret)['"]?\s*[:=]\s*['"][^'"]+['"]
  • Generic Secret:(?i)(password|passwd|secret|token|api[_-]?key)['"]?\s*[:=]\s*['"][^'"]{8,}['"]

使用方式

CLI 扫描命令

快速 grep 扫描(快速、高信号):

rg -n "(AKIA[0-9A-Z]{16}|sk_(live|test)_|rk_(live|test)_|pk_(live|test)_|xox[baprs]-|xapp-|xwfp-|gh[pousr]_|github_pat_)" .
rg -n "BEGIN (RSA|EC|OPENSSH|DSA|PGP) PRIVATE KEY" .
rg -n "(?i)(api[_-]?key|secret|token|password)\s*[:=]\s*['\"][^'\"]{8,}" .

专用扫描器(更彻底):

gitleaks detect --source . --redact --no-git
semgrep scan --config p/secrets --error
trufflehog filesystem . --only-verified

优先检查文件

文件模式 风险等级 原因
.env* CRITICAL 通常包含所有密钥
config.js/ts/json HIGH 应用配置
secret, credential HIGH 命名可疑
docker-compose*.yml HIGH 数据库密码、服务凭据
.github/workflows/*.yml HIGH CI/CD 密钥
test, spec, fixture MEDIUM 含真实凭据的测试数据
*.pem, *.key, *.p12 CRITICAL 私钥

脱敏格式

报告密钥时必须始终脱敏,仅显示前 4 位和后 4 位字符:

  • 原始:AKIAIOSFODNN7EXAMPLE → 脱敏:AKIA****...****MPLE
  • 原始:sk_test_XXXXYYYYZZZZ11112222 → 脱敏:sk_****...****2222

并且必须指示立即轮换密钥。

适用场景

  • 代码审查中检查是否意外提交了密钥
  • 安全审计与合规检查
  • CI/CD 流程中集成密钥扫描
  • 排查配置文件、环境文件、测试数据中的敏感信息

限制

  • 正则表达式可能产生误报,尤其是通用密钥模式,需结合上下文判断
  • Supabase 的 JWT 模式需要检查上下文
  • 该技能为参考性模式与工作流,具体扫描效果取决于所用工具与配置
  • 关于该技能的收费、价格、平台支持等具体信息暂未提供