秘密检测技能Skill secrets-detector

秘密检测技能用于识别和防范源代码中的硬编码敏感信息,如API密钥、密码和凭据,以提高软件安全性并防止泄露,涉及代码审计、安全合规和DevSecOps,关键词包括秘密检测、API密钥扫描、代码安全审计、安全漏洞预防。

安全审计 0 次安装 0 次浏览 更新于 3/9/2026

name: 秘密检测器 description: 检测源代码中的硬编码秘密、API 密钥、密码和凭据。用于检查泄露的秘密、凭据暴露或提交代码前。

秘密检测器

快速开始

使用 gitleaks 扫描秘密:

# 安装
brew install gitleaks  # macOS
# 或
pip install detect-secrets

# 扫描当前目录
gitleaks detect --source .

操作指南

步骤1:选择检测工具

Gitleaks(推荐):

gitleaks detect --source . --verbose

detect-secrets

detect-secrets scan . --all-files

手动 grep 模式

grep -rn "AKIA[0-9A-Z]{16}" .  # AWS 访问密钥
grep -rn "ghp_[a-zA-Z0-9]{36}" .  # GitHub 令牌

步骤2:扫描常见模式

秘密类型 模式 示例
AWS 访问密钥 AKIA[0-9A-Z]{16} AKIAIOSFODNN7EXAMPLE
AWS 秘密密钥 [A-Za-z0-9/+=]{40} wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
GitHub 令牌 ghp_[a-zA-Z0-9]{36} ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GitHub OAuth gho_[a-zA-Z0-9]{36} gho_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Slack 令牌 xox[baprs]-[0-9a-zA-Z-]+ xoxb-123456789-abcdefghij
私钥 -----BEGIN.*PRIVATE KEY----- RSA/EC 私钥
通用 API 密钥 api[_-]?key.*=.*['\"][a-zA-Z0-9]{20,} api_key = “abc123…”
通用密码 password.*=.*['\"][^'\"]+['\"] password = “secret123”

步骤3:检查 Git 历史

秘密可能存在于 Git 历史中,即使已被移除:

# 扫描整个 Git 历史
gitleaks detect --source . --log-opts="--all"

# 检查特定提交
git log -p --all -S 'password' --source

步骤4:分类发现

严重 - 需要立即轮换:

  • 云提供商凭据(AWS、GCP、Azure)
  • 数据库连接字符串
  • 私钥

- 尽快轮换:

  • 外部服务的 API 密钥
  • OAuth 令牌
  • Webhook 秘密

中等 - 审查并轮换:

  • 内部服务令牌
  • 可能被重复使用的测试凭据

步骤5:报告发现

## 秘密检测报告

### 严重(1)
1. **AWS 秘密密钥** - config/aws.js:12
   - 类型:AWS 凭据
   - 操作:在 AWS 控制台中立即轮换

### 高(2)
1. **GitHub 令牌** - scripts/deploy.sh:45
   - 类型:个人访问令牌
   - 操作:撤销并重新生成

2. **Slack Webhook** - src/notifications.js:23
   - 类型:传入 webhook URL
   - 操作:重新生成 webhook

预防

预提交钩子

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.18.0
    hooks:
      - id: gitleaks

.gitignore 模式

# 环境文件
.env
.env.local
.env.*.local

# 密钥文件
*.pem
*.key
*_rsa
*_ecdsa
*_ed25519

# 包含秘密的配置
config/secrets.yml
credentials.json

环境变量

将秘密移动到环境变量:

// 错误做法
const apiKey = "sk-abc123...";

// 正确做法
const apiKey = process.env.API_KEY;

常见误报

  • 文档中的示例/占位符值
  • 使用假凭据的测试装置
  • Base64 编码的非秘密数据
  • 哈希值(SHA、MD5)

在采取行动前,审查每个发现以确认是真正的秘密。