name: secret-detection-scanner description: 检测代码和配置中的秘密、凭据和敏感数据。扫描git历史记录查找秘密,检测API密钥、令牌、密码,检查环境文件,监控CI/CD日志中的暴露情况,生成修复步骤,并跟踪密钥轮换状态。 allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: security-testing backlog-id: SK-SEC-007
秘密检测扫描器
您是秘密检测扫描器 - 一个专门用于检测代码、配置和git历史记录中的秘密、凭据和敏感数据的技能。该技能提供全面的能力,用于防止秘密泄露和管理凭据安全。
概述
此技能支持AI驱动的秘密检测,包括:
- 代码和git历史记录中的Gitleaks秘密扫描
- TruffleHog深度提交扫描
- detect-secrets基线管理
- API密钥、令牌和密码检测
- 预提交钩子集成
- CI/CD流水线秘密监控
- 修复指导和轮换跟踪
先决条件
- 要扫描的Git仓库
- CLI工具:gitleaks、trufflehog、detect-secrets(根据需要)
- 用于历史扫描的Git
- 预提交框架(可选)
能力
1. Gitleaks秘密扫描
快速全面的秘密检测:
# 扫描当前目录
gitleaks detect --source . --report-format json --report-path gitleaks-report.json
# 使用详细输出扫描
gitleaks detect --source . -v --report-format json --report-path gitleaks-report.json
# 扫描git历史记录
gitleaks detect --source . --log-opts="--all" --report-format json
# 扫描特定提交
gitleaks detect --source . --log-opts="HEAD~10..HEAD" --report-format json
# 使用自定义配置扫描
gitleaks detect --source . --config .gitleaks.toml --report-format json
# 仅扫描暂存文件(预提交)
gitleaks protect --source . --staged --report-format json
# 扫描特定分支
gitleaks detect --source . --log-opts="origin/main..HEAD" --report-format json
# 为GitHub生成SARIF输出
gitleaks detect --source . --report-format sarif --report-path gitleaks.sarif
Gitleaks配置
# .gitleaks.toml
[extend]
useDefault = true
[allowlist]
description = "全局允许列表"
paths = [
'''\.gitleaks\.toml$''',
'''(.*?)(test|spec|mock)(.*)''',
'''vendor/''',
'''node_modules/''',
]
# 内部API密钥的自定义规则
[[rules]]
id = "internal-api-key"
description = "内部API密钥"
regex = '''INTERNAL_API_KEY\s*=\s*['"]([a-zA-Z0-9]{32})['"]'''
tags = ["internal", "api-key"]
keywords = ["INTERNAL_API_KEY"]
# 允许列表特定发现
[[rules.allowlist]]
regexes = ['''test-api-key-12345''']
2. TruffleHog深度扫描
全面的熵和基于模式的检测:
# 扫描文件系统
trufflehog filesystem . --json > trufflehog-results.json
# 扫描git仓库
trufflehog git file://. --json > trufflehog-git.json
# 扫描远程git仓库
trufflehog git https://github.com/org/repo.git --json
# 扫描特定分支
trufflehog git file://. --branch main --json
# 仅扫描已验证结果
trufflehog git file://. --only-verified --json
# 扫描GitHub组织
trufflehog github --org myorg --json
# 扫描S3存储桶
trufflehog s3 --bucket mybucket --json
# 包含归档仓库
trufflehog github --org myorg --include-archived --json
TruffleHog检测器
| 类别 | 检测到的秘密 |
|---|---|
| 云提供商 | AWS、GCP、Azure凭据 |
| 版本控制 | GitHub、GitLab令牌 |
| 通信 | Slack、Discord、Twilio |
| 支付 | Stripe、PayPal、Square |
| 数据库 | MongoDB、PostgreSQL、Redis |
| AI/ML | OpenAI、Anthropic、HuggingFace |
| 通用 | 私钥、JWT、OAuth |
3. detect-secrets基线管理
基于基线的秘密检测与审计跟踪:
# 创建基线
detect-secrets scan > .secrets.baseline
# 使用现有基线扫描
detect-secrets scan --baseline .secrets.baseline
# 审计基线(交互式)
detect-secrets audit .secrets.baseline
# 更新基线
detect-secrets scan --baseline .secrets.baseline --update
# 扫描特定文件
detect-secrets scan src/ tests/ --baseline .secrets.baseline
# 使用特定插件
detect-secrets scan --list-all-plugins
detect-secrets scan --no-keyword-scan --no-base64-string-scan
基线文件模式
{
"version": "1.4.0",
"plugins_used": [
{"name": "AWSKeyDetector"},
{"name": "ArtifactoryDetector"},
{"name": "Base64HighEntropyString", "limit": 4.5},
{"name": "BasicAuthDetector"},
{"name": "PrivateKeyDetector"}
],
"filters_used": [
{"path": "detect_secrets.filters.allowlist.is_line_allowlisted"},
{"path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies"}
],
"results": {
"config/settings.py": [
{
"type": "Secret Keyword",
"filename": "config/settings.py",
"hashed_secret": "abc123...",
"is_verified": false,
"line_number": 42
}
]
}
}
4. 预提交集成
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.0
hooks:
- id: gitleaks
- repo: https://github.com/Yelp/detect-secrets
rev: v1.4.0
hooks:
- id: detect-secrets
args: ['--baseline', '.secrets.baseline']
- repo: https://github.com/trufflesecurity/trufflehog
rev: v3.63.0
hooks:
- id: trufflehog
安装和运行:
# 安装pre-commit
pip install pre-commit
# 安装钩子
pre-commit install
# 在所有文件上手动运行
pre-commit run --all-files
5. CI/CD集成
GitHub Actions
name: 秘密扫描
on: [push, pull_request]
jobs:
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
trufflehog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: TruffleHog
uses: trufflesecurity/trufflehog@main
with:
extra_args: --only-verified
GitLab CI
secret-scan:
image: zricethezav/gitleaks:latest
script:
- gitleaks detect --source . --report-format json --report-path gitleaks-report.json
artifacts:
reports:
secret_detection: gitleaks-report.json
6. 秘密类别和模式
| 类别 | 示例 | 风险等级 |
|---|---|---|
| 云凭据 | AWS_SECRET_ACCESS_KEY、GCP服务账户 | 严重 |
| API密钥 | OpenAI、Stripe、SendGrid | 高 |
| 数据库 | 连接字符串、密码 | 严重 |
| 私钥 | RSA、SSH、PGP | 严重 |
| OAuth/JWT | Bearer令牌、刷新令牌 | 高 |
| 内部 | 内部API密钥、服务令牌 | 中 |
| 通用 | 高熵字符串 | 低-中 |
7. 修复工作流
检测到秘密时:
# 1. 识别受影响的提交
gitleaks detect --source . --log-opts="--all" -v
# 2. 立即撤销秘密
# (特定于提供商 - AWS控制台、GitHub设置等)
# 3. 从git历史记录中删除(如果需要)
# 选项A:BFG Repo Cleaner
bfg --delete-files secrets.txt
bfg --replace-text passwords.txt
# 选项B:git filter-repo
git filter-repo --path secrets.txt --invert-paths
# 4. 强制推送(与团队协调)
git push origin --force --all
# 5. 生成新凭据
# (特定于提供商)
# 6. 更新部署
# 更新环境变量、秘密管理器等
# 7. 如果是误报则添加到允许列表
# 更新 .gitleaks.toml 或 .secrets.baseline
8. 秘密轮换跟踪
{
"secrets_inventory": [
{
"id": "aws-prod-key",
"type": "AWS_ACCESS_KEY",
"environment": "production",
"created_at": "2025-07-01T00:00:00Z",
"last_rotated": "2025-12-01T00:00:00Z",
"rotation_policy_days": 90,
"next_rotation": "2026-03-01T00:00:00Z",
"status": "valid",
"storage": "AWS Secrets Manager"
}
],
"rotation_schedule": {
"critical": 30,
"high": 60,
"medium": 90,
"low": 180
}
}
MCP服务器集成
此技能可以利用以下MCP服务器:
| 服务器 | 描述 | 安装 |
|---|---|---|
| sast-mcp | TruffleHog、Gitleaks集成 | GitHub |
| SecOpsAgentKit secrets-gitleaks | Gitleaks凭据检测 | GitHub |
| Offensive-MCP-AI | DevSecOps秘密检测 | GitHub |
最佳实践
预防
- 预提交钩子 - 在提交前阻止秘密
- 环境变量 - 切勿硬编码秘密
- 秘密管理器 - 使用Vault、AWS Secrets Manager等
- .gitignore - 排除敏感文件
- 教育 - 培训开发人员安全实践
检测
- 定期扫描 - 每日/每周全面扫描
- CI/CD集成 - 在每个PR上扫描
- Git历史记录 - 不要忘记历史提交
- 多种工具 - 不同工具捕获不同模式
- 基线管理 - 跟踪已知误报
响应
- 立即撤销 - 轮换暴露的秘密
- 审计影响 - 检查未经授权的访问
- 清理历史记录 - 如果需要从git中删除
- 文档记录 - 为合规性跟踪事件
流程集成
此技能与以下流程集成:
secret-management.js- 整体秘密生命周期devsecops-pipeline.js- DevSecOps自动化sast-pipeline.js- SAST集成incident-response.js- 安全事件处理
输出格式
执行操作时,提供结构化输出:
{
"operation": "secret-scan",
"status": "completed",
"scan_type": "full-history",
"tools_used": ["gitleaks", "trufflehog"],
"scan_duration_seconds": 45,
"summary": {
"total_findings": 12,
"by_severity": {
"critical": 2,
"high": 5,
"medium": 3,
"low": 2
},
"by_type": {
"AWS_ACCESS_KEY": 1,
"GITHUB_TOKEN": 2,
"GENERIC_API_KEY": 5,
"PRIVATE_KEY": 1,
"HIGH_ENTROPY": 3
},
"verified": 3,
"unverified": 9
},
"critical_findings": [
{
"type": "AWS_ACCESS_KEY",
"file": "config/aws.py",
"line": 15,
"commit": "abc123",
"author": "dev@example.com",
"date": "2025-06-15",
"verified": true,
"redacted_value": "AKIA***************",
"remediation": "立即通过IAM控制台轮换AWS访问密钥"
}
],
"artifacts": ["gitleaks-report.json", "trufflehog-results.json"]
}
错误处理
常见问题
| 错误 | 原因 | 解决方案 |
|---|---|---|
No git repository |
不在git仓库中 | 初始化或指定路径 |
Baseline mismatch |
基线过时 | 更新基线文件 |
Too many findings |
无排除项 | 配置允许列表 |
Verification failed |
网络/API问题 | 检查连接性 |
约束
- 切勿记录或显示实际秘密值
- 始终在报告中脱敏发现
- 在历史重写前与团队协调
- 记录所有修复操作
- 为合规性跟踪轮换计划