秘密检测扫描器Skill secret-detection-scanner

秘密检测扫描器是一款专业的代码安全扫描工具,用于检测和防止敏感信息泄露。该工具能够扫描代码库、配置文件、Git历史记录中的API密钥、密码、令牌等敏感数据,集成Gitleaks、TruffleHog、detect-secrets等多种检测引擎,支持预提交钩子、CI/CD流水线集成,并提供完整的修复指导和密钥轮换跟踪功能。关键词:代码安全扫描、敏感信息检测、API密钥泄露防护、Git历史扫描、DevSecOps工具、秘密管理、凭据安全、CI/CD安全扫描、安全审计工具、密钥轮换跟踪

安全审计 0 次安装 0 次浏览 更新于 2/26/2026

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

最佳实践

预防

  1. 预提交钩子 - 在提交前阻止秘密
  2. 环境变量 - 切勿硬编码秘密
  3. 秘密管理器 - 使用Vault、AWS Secrets Manager等
  4. .gitignore - 排除敏感文件
  5. 教育 - 培训开发人员安全实践

检测

  1. 定期扫描 - 每日/每周全面扫描
  2. CI/CD集成 - 在每个PR上扫描
  3. Git历史记录 - 不要忘记历史提交
  4. 多种工具 - 不同工具捕获不同模式
  5. 基线管理 - 跟踪已知误报

响应

  1. 立即撤销 - 轮换暴露的秘密
  2. 审计影响 - 检查未经授权的访问
  3. 清理历史记录 - 如果需要从git中删除
  4. 文档记录 - 为合规性跟踪事件

流程集成

此技能与以下流程集成:

  • 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问题 检查连接性

约束

  • 切勿记录或显示实际秘密值
  • 始终在报告中脱敏发现
  • 在历史重写前与团队协调
  • 记录所有修复操作
  • 为合规性跟踪轮换计划