maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner

GitHub: maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner

这是一款深度集成于VS Code的本地化安全扫描扩展,旨在通过实时检测与提交拦截,防止代码中的各类密钥与敏感数据泄露。

Stars: 0 | Forks: 0

# 🛡️ Guardian - VS Code 密钥扫描器 **先进的安全扩展,可通过熵分析和自定义模式检测,在代码、配置和文本文件中发现密码、API密钥、令牌和敏感数据。** ## 🔒 我们的核心原则 ### 安全第一 Guardian 从构建之初就秉持 **安全第一的理念**。我们不仅检测密钥——更通过多层防御机制防止其进入您的代码库: - **🛡️ 多层防御**:实时扫描 → IDE 诊断 → 提交前阻止(需安装钩子) - **🚨 对关键密钥零容忍**(启用提交前钩子时):AWS密钥、私钥和数据库密码将自动阻止提交 - **⚡ 安全左移**:在密钥被 **提交前** 就捕捉,而非暴露后才反应 - **🎯 主动预防,而非被动应对**:内置预防机制,不仅仅是检测 ### 设计即隐私 您的代码和数据隐私 **不容妥协**: - **🔐 100% 本地处理**:所有扫描都在您的机器上进行——任何数据都不会发送到外部服务器 - **🚫 零遥测**:我们不收集、传输或存储您的任何代码或发现结果 - **🎭 密钥掩码**:所有检测到的密钥在界面和日志中会自动掩码显示(例如:`AKIA****MPLE`) - **📜 开源**:完全透明——您可以自行审计我们的代码 - **🏠 您的数据归您所有**:无云依赖、无API调用、无数据泄露 ### 责任与合规 我们认真对待自身责任: ## 🚀 核心功能 ### Guardian 有何不同? 1. **熵分析** - 使用香农熵计算来检测传统模式匹配可能遗漏的高随机性字符串 2. **多语言支持** - 扫描代码文件(.js, .ts, .py, .go 等)、配置文件(.env, .yaml 等)和文本文件 3. **上下文保留** - 每个发现结果都包含周围的代码上下文,方便人工审查 4. **实时扫描** - 保存时自动扫描文件(默认启用);打开时扫描可用(默认禁用) 5. **全面的模式库** - 可检测 36 种类型的密钥,包括: - 云凭据(AWS、Azure、GCP) - API 密钥和令牌 - 数据库连接字符串 - 加密私钥 - 支付服务凭据 - 源代码控制令牌 - 以及更多... 6. **自定义模式支持** - 添加您自己的正则表达式模式,用于检测组织特定的密钥 7. **误报抑制** - 可将发现结果标记为误报并附上理由;轻松管理抑制记录 8. **安全仪表板** - 可视化仪表板,展示安全概览和发现结果摘要 9. **导出为 Markdown 或 CSV** - 导出报告用于外部分析和合规 10. **基于严重性的过滤** - 优先关注关键问题 11. **Git 提交阻止** - 提交前钩子(安装后)可阻止包含密钥的提交 ## 📦 安装 ### 通过 VSIX 安装 1. 下载 `.vsix` 文件 2. 打开 VS Code 3. 按下 `Ctrl+Shift+P`(Mac 上为 `Cmd+Shift+P`) 4. 输入 "Install from VSIX" 5. 选择已下载的文件 ### 从源代码安装 ``` git clone https://github.com/maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner.git cd VSCE-Guardian-Secrets-Scanner npm install npm run compile # 在 VS Code 中按 F5 进行调试 ``` ## 🎯 使用 ### 命令 按下 `Ctrl+Shift+P`(Mac 上为 `Cmd+Shift+P`)并搜索: - **Guardian: 扫描整个工作区** - 扫描工作区中的所有文件 - **Guardian: 扫描当前文件** - 仅扫描活动文件 - **Guardian: 显示安全仪表板** - 打开可视化安全仪表板 - **Guardian: 清除所有发现** - 清除所有已检测到的发现结果 - **Guardian: 导出安全报告** - 将发现结果导出为 Markdown 或 CSV - **Guardian: 添加自定义模式** - 添加组织特定的检测模式 - **Guardian: 安装提交前钩子** - 阻止包含密钥的提交 - **Guardian: 扫描暂存文件** - 在提交前检查文件 - **Guardian: 查看抑制报告** - 查看所有抑制记录的审计 - **Guardian: 打开设置** - 配置 Guardian 选项 ### 活动栏 点击活动栏中的 **Guardian 盾牌** 图标可查看: - 按严重性分组的安全发现结果 - 统计数据和概览 - 快速导航到问题位置 ### 状态栏 底部状态栏实时显示安全状态: - 🛡️ **Guardian: 安全** - 未检测到问题 - ⚠️ **Guardian: X 个关键问题** - 发现关键问题 - ℹ️ **Guardian: X** - 较低严重性问题 ## ⚙️ 配置 Guardian 提供直观的设置界面以便于配置。 ### 打开设置 **选项 1:通过命令面板** ``` Ctrl+Shift+P (or Cmd+Shift+P on Mac) → "Guardian: Show Settings" ``` **选项 2:通过仪表板** - 点击 Guardian 安全仪表板上的 **设置** 按钮 **选项 3:通过标准设置** ``` Ctrl+, (or Cmd+, on Mac) → Search for "Guardian" ``` ### 设置类别 #### 🔍 检测设置 - **熵分析** - 通过分析字符随机性来检测密钥(默认启用) - **熵阈值** - 配置敏感性(3.0 = 捕获更多,6.0 = 严格,默认 4.5) - **最低严重性级别** - 仅报告关键、高、中或低严重性的发现结果 #### 📁 扫描设置 - **排除模式** - 要跳过的文件夹(默认为 node_modules, dist, build, .git) - **保存时扫描** - 启用文件保存时的自动扫描(默认:true) - **打开时扫描** - 启用文件打开时的自动扫描(默认:false) #### 🎯 自定义模式 - 添加您自己的正则表达式模式,用于检测组织特定的密钥 - 适用于检测公司特定的 API 密钥格式或内部令牌 #### 🔐 Git 安全设置 - **阻止关键密钥** - 阻止包含关键密钥的提交(默认:安装钩子时启用) - **阻止高严重性** - 可选择也阻止高严重性的密钥 - **自动扫描暂存区** - 每次提交前自动扫描暂存的文件 ### 高级配置 (settings.json) 您也可以直接在 `settings.json` 中编辑设置: ``` { // Detection "guardian.enableEntropyAnalysis": true, "guardian.entropyThreshold": 4.5, "guardian.severityLevel": "medium", // Scanning "guardian.scanOnSave": true, "guardian.scanOnOpen": false, "guardian.excludePatterns": [ "**/node_modules/**", "**/dist/**", "**/build/**", "**/.git/**" ], // Custom patterns "guardian.customPatterns": [], // Git integration "guardian.git.blockOnCritical": true, "guardian.git.blockOnHigh": false, "guardian.git.autoScanStaged": false } ``` ## 🔍 检测类别 Guardian 检测以下类别的密钥: ### 云凭据 - AWS 访问密钥、秘密密钥、会话令牌 - Google Cloud API 密钥、服务帐户、OAuth - Azure 存储密钥、客户端密钥 ### API 密钥与令牌 - 通用 API 密钥 - Bearer 令牌 - 授权头 - JSON Web Tokens (JWT) ### 源代码控制 - GitHub 个人访问令牌、OAuth、应用令牌 - GitLab 个人访问令牌 ### 数据库 - 连接字符串(MongoDB、MySQL、PostgreSQL) - 数据库密码 ### 加密密钥 - RSA 私钥 - SSH 私钥 - PGP 私钥 ### 支付服务 - Stripe API 密钥 - PayPal/Braintree 令牌 ### 通讯服务 - Slack 令牌和 Webhooks - Twilio API 密钥 ### 邮件服务 - SendGrid API 密钥 - Mailgun API 密钥 - Mailchimp API 密钥 ### 包管理器 - NPM 令牌 - PyPI API 令牌 ### 通用密钥 - 代码中的密码 - 密钥 - 敏感关键字附近的高熵字符串 ## 🧮 熵分析 Guardian 使用 **香农熵** 来检测不符合已知模式的潜在密钥: ``` Entropy = -Σ(p(x) * log₂(p(x))) ``` - **低熵**(~2.0):"aaaaaaa" 或 "1111111" - **中等熵**(~3.5):"password123" - **高熵**(~4.5+):"K7x9Mq2Wp5Nz8Rt3" ← 很可能是密钥! 具有高熵(随机性)且字符类型多样的字符串会被标记为潜在密钥。 ## 📊 安全仪表板 可视化仪表板提供: - **统计信息**:按严重性和类别统计的发现计数 - **概览**:快速查看安全状态 - **导航**:点击发现结果可跳转到代码中的确切位置 - **过滤**:关注特定严重性级别或类型 ## 🛡️ 最佳实践 ### Git 提交保护 **安装提交前钩子**: ``` # 通过命令面板 Ctrl+Shift+P → "Guardian: Install Pre-commit Hook" ``` 这将自动阻止包含密钥的提交: - ✅ 关键密钥 → 提交被阻止 - ⚠️ 高严重性密钥 → 警告(可配置) - ℹ️ 中/低严重性 → 仅提示信息 **手动验证**: ``` # 提交之前 Ctrl+Shift+P → "Guardian: Scan Staged Files" ``` 有关详细的 Git 配置,请参见上面的设置部分。 ### 预防措施 1. **使用环境变量**:将密钥存储在 `.env` 文件中(添加到 `.gitignore`) 2. **密钥管理**:使用 AWS Secrets Manager、HashiCorp Vault 或类似工具 3. **提交前钩子**:将 Guardian 添加到提交前钩子,以防止密钥被提交 4. **定期扫描**:安排工作区定期扫描 ### 修复措施 如果 Guardian 发现密钥: 1. **关键/高严重性**: - ✅ 立即轮换凭据 - ✅ 检查访问日志是否有未授权使用 - ✅ 从仓库历史记录中删除(使用 `git-filter-repo`) - ✅ 更新所有使用该凭据的系统 2. **中/低严重性**: - ✅ 审查是否为真实密钥或误报 - ✅ 移至环境变量或密钥管理器 - ✅ 更新 `.gitignore` 以防止未来提交 ### 管理误报 Guardian 提供 **带有审计跟踪的综合抑制系统**: **抑制某个发现**: ``` # 通过树视图(推荐) Right-click finding in Guardian Security sidebar → "Suppress Finding (Mark as False Positive)" # 通过命令面板 Ctrl+Shift+P → "Guardian: Suppress Finding" ``` - 提供理由(例如:“单元测试模拟 AWS 密钥”) - 抑制记录将存储您的用户名和时间戳 - 自动记录到审计跟踪 **查看所有抑制记录**: ``` Ctrl+Shift+P → "Guardian: View Suppressed Findings" ``` - 查看所有已抑制的发现结果及其理由 - 可选择查看文件 - 可选择取消抑制发现 **审计与合规**: ``` # 查看抑制统计和历史 Ctrl+Shift+P → "Guardian: View Suppression Report" # 审查待处理超过 30 天的抑制 Ctrl+Shift+P → "Guardian: Review Pending Suppressions" # 为外部工具导出发现结果 Ctrl+Shift+P → "Guardian: Export Security Report" ``` **存储与审计跟踪**: - ✅ **工作存储**:`.vscode/guardian-suppressions.json`(工作区本地) - ✅ **审计日志**:`SUPPRESSIONS_AUDIT.md`(可由 Git 跟踪) - ✅ **元数据**:文件路径、行号、模式、原因、时间戳、用户名 - ✅ **历史记录**:所有抑制/取消抑制/审查操作的完整记录 **用于团队与合规**: - 提交 `SUPPRESSIONS_AUDIT.md` 以实现团队可见性 - 所有抑制记录均关联用户名以确保责任可溯 - 历史审计跟踪用于安全审查 有关审计日志的完整详细信息,请参阅 [SUPPRESSION_AUDIT_GUIDE.md](docs/SUPPRESSION_AUDIT_GUIDE.md)。 ## 🎨 自定义模式 添加组织特定的模式: ``` // Example: Detect custom API key format { "name": "Acme Corp API Key", "pattern": "ACME_[A-Z]{4}_[0-9a-f]{32}", "severity": "critical", "description": "Acme Corp API key detected", "flags": "gi" } ``` ## 📈 性能 - **快速扫描**:使用优化的正则表达式模式 - **智能排除**:自动跳过 node_modules、dist 等目录 - **增量式**:保存时扫描仅检查已修改的文件 - **可配置**:控制扫描范围 ## 📄 许可证 MIT 许可证 - 详见 LICENSE 文件 ## 🧪 测试 Guardian 包含全面的单元测试,涵盖: - 模式检测准确性 - 熵计算 - 扫描器功能 - 误报过滤 ``` # 运行测试 npm install npm test ``` 测试位于 `src/test/` 目录中。 ## 🔒 安全与隐私保证 ### 我们保护什么 **您的代码**: - ✅ 永远不会离开您的机器 - ✅ 永远不会发送到外部服务器 - ✅ 永远不会被远程记录或存储 - ✅ 永远不会用于训练或分析 **您的密钥**: - ✅ 在所有界面显示中被掩码 - ✅ 在所有日志文件中被掩码 - ✅ 在导出的报告中被掩码 - ✅ 永远不会在错误消息中暴露 **您的隐私**: - ✅ 无用户跟踪 - ✅ 无分析数据收集 - ✅ 无回传功能 - ✅ 无需互联网连接 ### 安全架构 ``` ┌─────────────────────────────────────────┐ │ Your VS Code (Local Environment) │ │ │ │ ┌───────────────────────────────┐ │ │ │ Guardian Extension │ │ │ │ │ │ │ │ • Scans locally │ │ │ │ • Processes in-memory │ │ │ │ • No network calls │ │ │ │ • No external dependencies │ │ │ └───────────────────────────────┘ │ │ │ │ ┌───────────────────────────────┐ │ │ │ Your Files │ │ │ │ (Never sent externally) │ │ │ └───────────────────────────────┘ │ └─────────────────────────────────────────┘ ↓ Results stay local ↓ You control everything ``` ### 安全认证 - ✅ 无外部 API 依赖 - ✅ 无遥测或跟踪 - ✅ 完全离线运行 - ✅ 开源以供安全审计 - ✅ 无第三方数据共享 ### 信任模型 **零信任架构**: 1. 默认不信任任何事物 2. 本地验证一切 3. 假设已被入侵(多层防御) 4. 最小化爆炸半径(在提交前阻止) 5. 持续验证(实时扫描) Guardian 帮助您发现密钥,但自身 **绝不** 成为漏洞。 ## 🛡️ 安全最佳实践 Guardian 是一款 **安全工具**,而非安全风险。用它来: - ✅ 防止凭据暴露 - ✅ 满足合规要求 - ✅ 教育开发人员安全意识 - ✅ 建立安全第一的文化 始终将 Guardian 与以下措施结合使用: - 密钥管理工具(AWS Secrets Manager、Vault) - 代码审查流程 - 安全培训 - 事件响应计划 **请记住**:没有完美的工具。将 Guardian 作为综合安全策略的一部分使用。 ## ⚠️ 免责声明 虽然 Guardian 很全面,但没有自动工具能捕捉 100% 的密钥。请始终: - 人工审查代码中的敏感数据 - 使用适当的密钥管理实践 - 遵循您组织的安全政策 ### 获取帮助 - **文档**: - [README](README.md) - 功能概述(本文件) - [安全策略](SECURITY.md) - 安全漏洞与报告 - [抑制指南](docs/SUPPRESSION_AUDIT_GUIDE.md) - 审计日志与抑制 - [变更日志](docs/CHANGELOG.md) - 版本历史与更新 - **报告错误**:[GitHub Issues](https://github.com/maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner/issues) - 包含 Guardian 版本、VS Code 版本、文件类型 - 提供最小化的复现步骤 - 请勿在错误报告中包含实际的密钥 - **功能请求**:[GitHub Issues](https://github.com/maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner/issues) 并打上 `enhancement` 标签 - 描述使用场景 - 解释它如何提高安全性 - **问题与讨论**:[GitHub Discussions](https://github.com/maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner/discussions) - 提问使用方法 - 分享技巧和最佳实践 ### 安全报告 **重要**:如果您发现 **Guardian 本身** 存在漏洞: 1. **请勿** 公开发布 GitHub issue 2. 将安全详情发送至邮箱:[maneeshkumar.thakur@outlook.com](mailto:maneeshkumar.thakur@outlook.com) 3. 包括描述、复现步骤和潜在影响 4. 请允许 48 小时的确认时间 5. **替代方案**:使用 [GitHub 安全公告](https://github.com/maneesh-kumar-thakur/VSCE-Guardian-Secrets-Scanner/security) ### 快速故障排除 **Guardian 未检测到密钥?** - 验证设置中 `guardian.scanOnSave` 已启用 - 检查文件类型是否受支持(JavaScript、Python、Go、Java、TypeScript 等) - 尝试手动扫描:`Ctrl+Shift+P` → "Guardian: 扫描整个工作区" - 检查熵阈值设置 **误报过多?** - 增加 `guardian.entropyThreshold`(值越高 = 检测越严格) - 带理由地抑制发现结果,以便团队查看 - 在 `guardian.excludePatterns` 中添加模式以排除误报类别 **提交前钩子问题?** - 验证工作区中已初始化 Git - 运行:`Ctrl+Shift+P` → "Guardian: 安装提交前钩子" - 检查 `.git/hooks/pre-commit` 文件权限 - 验证钩子可执行:`chmod +x .git/hooks/pre-commit` **性能问题?** - 禁用 `guardian.scanOnOpen`(默认仅在保存时扫描) - 在 `guardian.excludePatterns` 中排除大型文件夹 - 使用 `guardian.severityLevel` 关注关键问题 **为关心安全的开发者打造 🛡️** **"安全第一。隐私始终。信任从无。"** - Guardian 之道
标签:API密钥检测, AWS安全, DInvoke, GitHub安全, MITM代理, Redis利用, Shift-Left安全, Slack安全, Stripe安全, VS Code扩展, 人工智能安全, 代码安全, 令牌检测, 合规性, 多语言支持, 安全测试框架, 实时扫描, 密码检测, 开源, 敏感数据, 本地处理, 模式匹配, 漏洞枚举, 熵分析, 秘密扫描, 网络安全, 自动化攻击, 自动化资产收集, 输入验证, 配置文件扫描, 隐私保护