mcpField
S
security-secrets

security-secrets

github.com/igorwarzocha安全122112 次安装38 周前更新
代码仓库

关于 security-secrets

security-secrets 是用于在代码库中查找凭据泄露的安全技能,提供正则模式和扫描指引,涵盖常见密钥类型、重点文件、命令行扫描与脱敏规则。

主要功能

  1. 01高信号密钥正则模式
  2. 02覆盖常见凭据类型
  3. 03重点文件风险指引
  4. 04命令行扫描命令
  5. 05密钥脱敏格式
  6. 06立即轮换指引

适用场景

  1. 01搜索仓库中的泄露凭据
  2. 02安全审查时确定文件优先级
  3. 03在审计报告中脱敏扫描结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/igorwarzocha/opencode-workflows --skill security-secrets

安装后在 Claude Code 中输入/security-secrets确认已加载。

附带文件scripts/scan-all.shscripts/scan.sh

详细介绍

用于检测代码库中密钥的高可信度正则表达式模式。

高可信度正则表达式模式

密钥类型模式说明
AWS 访问密钥AKIA[0-9A-Z]{16}始终为 20 个字符,以 AKIA 开头
AWS 密钥(?i)aws(.{0,20})?['"][0-9a-zA-Z/+]{40}['"]40 个类似 base64 的字符
Google API 密钥AIza[0-9A-Za-z\-_]{35}总共 39 个字符
Google OAuth[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com客户端 ID
Google 服务账号"type":\s*"service_account"位于 JSON 文件中
GitHub 令牌gh[pousr]_[A-Za-z0-9_]{36,}ghp_/gho_/ghu_/ghs_/ghr_
GitHub PAT(细粒度)github_pat_[A-Za-z0-9_]{22,}较新的格式
GitLab 令牌glpat-[A-Za-z0-9\-]{20,}个人访问令牌
Stripe 密钥`sk_(livetest)_[0-9a-zA-Z]{24,}`
Stripe 受限密钥`rk_(livetest)_[0-9a-zA-Z]{24,}`
Stripe 可发布密钥`pk_(livetest)_[0-9a-zA-Z]{24,}`
Slack 机器人令牌xoxb-[A-Za-z0-9-]+机器人令牌
Slack 用户令牌xoxp-[A-Za-z0-9-]+用户令牌
Slack 工作流令牌xwfp-[A-Za-z0-9-]+工作流令牌
Slack 应用令牌xapp-[A-Za-z0-9-]+应用级令牌
Slack Webhookhttps://hooks\.slack\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[a-zA-Z0-9]+
Discord 令牌[MN][A-Za-z\d]{23,}\.[\w-]{6}\.[\w-]{27}机器人令牌
Discord Webhookhttps://discord\.com/api/webhooks/[0-9]+/[A-Za-z0-9_-]+
OpenAI 密钥sk-[A-Za-z0-9]{48}API 密钥
Anthropic 密钥sk-ant-[A-Za-z0-9\-]{32,}API 密钥
TwilioSK[a-z0-9]{32}API 密钥 SID
SendGridSG\.[a-zA-Z0-9]{22}\.[a-zA-Z0-9]{43}API 密钥
Mailgunkey-[0-9a-zA-Z]{32}API 密钥
Mailchimp[a-f0-9]{32}-us[0-9]{1,2}API 密钥
Firebase(?i)firebase[a-z0-9\-]+\.firebaseio\.com数据库 URL
SupabaseeyJ[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}API 密钥
NPM 令牌npm_[A-Za-z0-9]{36}发布令牌
PyPI 令牌pypi-[A-Za-z0-9_-]{50,}上传令牌
私钥`-----BEGIN (RSAEC
数据库 URL`(?i)(postgresmysql
URL 中的密码[a-zA-Z]{3,15}://[^/\\:@]+:[^/\\:@]+@.{1,100}基本身份验证
JWT 密钥`(?i)(jwt[_-]?secrettoken[_-]?secret)['"]?\s*[:=]\s*['"][^'"]+['"]`
通用密钥`(?i)(passwordpasswd

CLI 扫描命令

# Quick grep scan (fast, high signal)
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,}" .

# Dedicated scanners (thorough)
gitleaks detect --source . --redact --no-git
semgrep scan --config p/secrets --error
trufflehog filesystem . --only-verified

<priority_files>

优先检查的文件

文件模式风险级别原因
.env*CRITICAL通常包含所有密钥
*config*.js/ts/jsonHIGH应用配置
*secret*、*credential*HIGH名称可疑
docker-compose*.ymlHIGH数据库密码、服务凭据
.github/workflows/*.ymlHIGHCI/CD 密钥
*test*、*spec*、*fixture*MEDIUM测试数据中可能包含真实凭据
*.pem、*.key、*.p12CRITICAL私钥

</priority_files>

脱敏格式

报告密钥时,必须始终进行脱敏:

Original: AKIAIOSFODNN7EXAMPLE
Redacted: AKIA****...****MPLE

Original: sk_test_XXXXYYYYZZZZ11112222
Redacted: sk_****...****2222

仅显示前 4 个和后 4 个字符。必须指示立即轮换密钥。

评论

支持 Markdown