adhamcybersec/secretguard

GitHub: adhamcybersec/secretguard

SecretGuard 是一款基于正则、熵值分析和机器学习三层引擎的代码密钥检测与修复工具,用于发现和防止代码仓库中的敏感凭证泄露。

Stars: 0 | Forks: 0

# SecretGuard 🔐 [![PyPI version](https://img.shields.io/pypi/v/secretguard)](https://pypi.org/project/secretguard/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![GitHub Issues](https://img.shields.io/github/issues/adhamcybersec/secretguard)](https://github.com/adhamcybersec/secretguard/issues) [![GitHub Stars](https://img.shields.io/github/stars/adhamcybersec/secretguard)](https://github.com/adhamcybersec/secretguard/stargazers) SecretGuard 使用三层检测引擎(正则表达式模式、香农熵分析和随机森林机器学习分类器,F1 分数:0.96)扫描您的源代码,以发现暴露的凭证、API 密钥、密码和敏感数据。 ## 功能特性 - **三层检测**:28+ 种正则表达式模式、熵分析和机器学习分类器协同工作 - **机器学习驱动**:基于 210 个样本训练并进行交叉验证的随机森林模型(精确率:0.95,召回率:0.97) - **密钥掩码**:所有报告输出都会对检测到的密钥进行掩码处理,以防止二次泄露 - **Git 历史扫描**:使用 `scan-history` 扫描过去的提交记录以查找密钥 - **实时验证**:`--verify` 标志可检查检测到的凭证是否仍然有效(支持 GitHub, AWS) - **SARIF 输出**:通过增强型 SARIF 2.1.0 报告实现 IDE 和 CI/CD 集成 - **Pre-commit 框架**:原生 `.pre-commit-hooks.yaml` 支持标准 pre-commit 集成 - **默认安全**:报告文件以 0o600 权限写入,跳过符号链接 - **多种格式**:支持控制台、JSON、Markdown、HTML 和 SARIF 输出 - **可配置**:通过 `.secretguard.yml` 进行项目特定设置 - **白名单与行内忽略**:通过文件/模式白名单和 `# secretguard:ignore` 减少误报 ## 安装 ``` pip install secretguard ``` 包含实时凭证验证支持: ``` pip install secretguard[verify] ``` ## 快速开始 ``` # 扫描当前目录 secretguard scan # 扫描指定路径并输出 JSON secretguard scan /path/to/project --format json --output report.json # 生成 HTML 报告 secretguard scan . --format html --output report.html # 扫描并提供修复建议 secretguard scan . --remediate # 禁用 ML 以加速扫描 secretguard scan . --no-ml # 验证检测到的凭据是否有效 secretguard scan . --verify # 扫描 git 历史记录以查找泄露的机密 secretguard scan-history --max-commits 200 # 评估 ML 模型性能 secretguard ml-evaluate ``` ## Pre-commit 框架集成 添加到您的 `.pre-commit-config.yaml`: ``` repos: - repo: https://github.com/adhamcybersec/secretguard rev: v0.8.0 hooks: - id: secretguard ``` 然后运行: ``` pre-commit install ``` 或者,使用内置的 hook 安装程序: ``` secretguard install-hook ``` ## CI/CD 集成 ### GitHub Actions ``` name: Secret Scan on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.12' - run: pip install secretguard - run: secretguard scan . --format sarif --output results.sarif - uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif ``` ### GitLab CI ``` include: - remote: 'https://raw.githubusercontent.com/adhamcybersec/secretguard/master/ci-templates/gitlab-ci.yml' ``` 或手动添加: ``` secretguard-scan: stage: test image: python:3.12-slim before_script: - pip install secretguard script: - secretguard scan . --format sarif --output gl-secretguard-report.sarif artifacts: reports: sast: gl-secretguard-report.sarif ``` ## 工作原理 SecretGuard 采用三层检测方法: 1. **正则表达式模式匹配**(28+ 种模式):检测已知的密钥格式 —— AWS 密钥、GitHub 令牌、Stripe 密钥、私钥文件头、数据库连接字符串等。模式按提供商分组,位于 `secretguard/detectors/patterns.py` 中。 2. **香农熵分析**:识别可能是密码或密钥的高随机性字符串(熵值 >= 4.0)。根据熵、长度和字符多样性应用置信度评分,并对 UUID 和 git 哈希值进行惩罚。 3. **机器学习分类**(随机森林):基于 210 个标记样本训练的分类器,用于捕获与已知模式不匹配的密钥。特征包括熵、字符比例、多样性、常见前缀和连续字符运行。交叉验证 F1 分数:0.96。 结果通过 O(1) 基于集合的查找在各检测器间进行去重,机器学习模型会缓存到磁盘以加快后续扫描速度。 ## 支持的密钥类型 | 类别 | 类型 | |----------|-------| | **云服务** | AWS Access Keys, AWS Secret Keys, Google API Keys, Azure Storage Keys | | **Git 平台** | GitHub PATs, GitHub OAuth, GitHub Fine-Grained, GitLab PATs | | **支付** | Stripe Live & Test Keys | | **通信** | Slack Webhooks, Slack Bot Tokens, Discord Bot Tokens | | **邮件** | SendGrid, Twilio, Mailgun API Keys | | **包管理** | npm Tokens, PyPI Tokens | | **加密** | RSA/SSH/PGP/EC/DSA Private Keys | | **数据库** | PostgreSQL, MySQL, MongoDB, Redis 连接字符串 | | **认证** | JWT Tokens, OAuth Bearer Tokens, 通用 API Keys, 密码 | ## 配置 使用 `secretguard init` 创建 `.secretguard.yml`,或手动创建: ``` exclude: - "node_modules/**" - "*.test.js" - "vendor/**" confidence_threshold: 0.75 custom_patterns: - name: "Internal API Key" pattern: "INTERNAL_[A-Z0-9]{32}" confidence: 0.95 severity: high remediation: "Move to environment variables" allowlist: - file: "tests/fixtures/secrets.py" line: 10 reason: "Test fixture" - pattern: "example.*key" reason: "Documentation examples" ignore_patterns: - "example_api_key_here" - "REPLACE_WITH_YOUR_KEY" ``` ### 行内忽略 使用注释标记忽略特定行: ``` password = "test123" # secretguard:ignore api_key = "demo_key" # sg:ignore ``` 标记必须出现在注释分隔符(`#`、`//`、`/*`、`--`)之后,以防止通过字符串值滥用。 ## CLI 参考 | 命令 | 描述 | |---------|-------------| | `secretguard scan [PATH]` | 扫描文件以查找密钥(默认:`.`) | | `secretguard scan-history` | 扫描 git 提交历史 | | `secretguard ml-evaluate` | 显示机器学习模型交叉验证指标 | | `secretguard init` | 创建 `.secretguard.yml` 模板 | | `secretguard install-hook` | 安装 git pre-commit hook | | `secretguard uninstall-hook` | 移除 pre-commit hook | | `secretguard hook-status` | 检查 hook 安装状态 | | `secretguard version` | 显示版本 | ### 扫描选项 | 标志 | 描述 | |------|-------------| | `--format` | 输出格式:`console`, `json`, `markdown`, `html`, `sarif` | | `--output PATH` | 将报告保存到文件 | | `--confidence FLOAT` | 最小置信度阈值 (0.0-1.0) | | `--exclude PATTERN` | 排除文件模式 | | `--no-ml` | 禁用机器学习检测(速度更快) | | `--verify` | 尝试实时凭证验证 | | `--staged` | 仅扫描 git 暂存文件 | | `--remediate` | 包含修复建议 | | `--verbose` | 详细输出 | | `--config PATH` | 自定义配置文件路径 | | `--no-config` | 忽略配置文件 | ## 安全特性 - **密钥掩码**:报告从不包含原始密钥值(仅可见前/后 4 个字符) - **安全权限**:报告文件以 `0o600` 权限创建(仅所有者可读/写) - **符号链接保护**:扫描器跳过符号链接并验证解析后的路径保持在扫描目录内 - **强化的忽略机制**:`secretguard:ignore` 标记仅在注释内有效,在字符串值中无效 - **选择性验证**:实时凭证检查需要显式的 `--verify` 标志 ## 路线图 SecretGuard 正在积极开发中。以下是即将推出的内容: - **v0.9.0** — 用于 AI 代理集成(Claude Code, Cursor, Windsurf)的 MCP 服务器,Python SDK,VS Code 扩展 - **v1.0.0** — PyPI 稳定版发布,Docker 镜像,90%+ 测试覆盖率,文档站点 - **v1.1.0** — 基于 Transformer 的机器学习模型,额外的凭证验证器(Stripe, Google, Slack),自定义机器学习训练 - **v1.2.0** — 团队 Web 仪表板,策略引擎,多仓库扫描,密钥轮换辅助 - **v1.3.0** — Bitbucket/Jenkins 集成,Terraform/IaC 扫描,Jupyter Notebook 支持 ## 开发 ``` git clone https://github.com/adhamcybersec/secretguard.git cd secretguard pip install -e ".[dev]" pytest ``` ## 贡献 欢迎贡献!请先阅读我们的[贡献指南](CONTRIBUTING.md)。 1. Fork 本仓库 2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交您的更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 打开一个 Pull Request ## 许可证 MIT 许可证 - 详情请参见 [LICENSE](LICENSE)。 ## 作者 **Adham Rashed** 网络安全研究员 [adhampx.com](https://adhampx.com) | [GitHub](https://github.com/adhamcybersec) **安全提示**:SecretGuard 有助于识别密钥,但不能替代适当的密钥管理。对于生产系统,请始终使用专用解决方案(HashiCorp Vault, AWS Secrets Manager 等)。
标签:Apex, API密钥泄露, CI/CD安全, DevSecOps, Git历史扫描, Google AI, Llama, Pre-commit, Python安全工具, SARIF, 上游代理, 云安全监控, 人工智能, 代码安全, 安全助手, 对抗攻击, 敏感信息检测, 机器学习, 漏洞枚举, 熵分析, 用户模式Hook绕过, 秘密遮掩, 网络安全, 误报率降低, 逆向工具, 随机森林, 随机森林分类器, 隐私保护, 静态分析