ILYXAAA/SecretsScanner

GitHub: ILYXAAA/SecretsScanner

基于FastAPI的代码仓库密钥泄露检测Web平台,支持远程扫描、本地ZIP分析和多仓库批量检测,提供完整的用户管理、误报排除和审计功能。

Stars: 1 | Forks: 0

# 🔐 Secrets 扫描器 用于自动搜索和分析源代码仓库中机密信息(API 密钥、token、密码)的 Web 应用程序。与负责下载和扫描仓库的微服务协同工作(使用分类模型按严重程度进行标记)。https://github.com/ILYXAAA/SecretsScanner_service ## 截图 **主页** image **项目** image **多重扫描** image **扫描结果** image **设置** image ## 🏗️ 架构 ### 🧩 主要组件 - **Frontend**: 基于 FastAPI + Jinja2 模板的 Web 界面 - **Backend**: RESTful API,支持 SQLite/PostgreSQL 数据库 - **微服务**: 用于扫描仓库的外部服务 - **数据库**: 用于存储项目、扫描和发现的机密信息的多表结构 ### 技术栈 - **FastAPI**: 主 Web 框架 - **SQLAlchemy**: 用于数据库操作的 ORM - **Jinja2**: HTML 模板引擎 - **Passlib + bcrypt**: 密码哈希 - **jose[jwt]**: 用于身份验证的 JWT token - **HTTPX**: 用于与微服务交互的 HTTP 客户端 - **Cryptography**: 敏感数据加密 ## 主要功能 ### 项目管理 - 添加 Azure DevOps/Git 仓库 - 仓库 URL 验证 - 当项目名称更改时自动更新相关扫描 ### 🔍 扫描类型 - **远程扫描**: 通过 commit/branch/tag 进行扫描,并自动解析 - **本地扫描**: 上传 ZIP 压缩包进行分析 - **多重扫描**: 扫描多个仓库 ### 结果处理 - 按机密类型自动分类(API 密钥、token、密码) - 按威胁等级 `High`/`Potential` 分类 - 机密状态跟踪 `Confirmed`/`Refuted`/`No status` - 从之前的扫描中继承对类似机密的决定 ### 例外管理 - 处理 false-positive(误报) - 注释和变更审计系统 ### 扫描设置 - 自定义机密检测规则 - false-positive 排除规则 - 按扩展名和文件名过滤 - 配置用于访问仓库的 PAT token ## 工作流程 ### 1. 初始化扫描 ``` Пользователь → Веб-интерфейс → Создание записи в БД → Микросервис ``` - 创建状态为 `pending` 的扫描记录 - 向微服务发送带有 `callback URL` 的请求 - 成功时(如果找到 repo+commit),状态更改为 `running` ### 2. 执行扫描 ``` Микросервис → Скачивание+распаковка репозитория → Анализ файлов → Callback ``` - 微服务下载仓库或处理 `ZIP` - 应用机密检测规则 - 通过排除规则过滤结果,应用分类模型 - 通过 `callback API` 发送结果 ### 3. 处理结果 ``` Callback API → Анализ предыдущих решений → Сохранение в БД ``` - 在之前的扫描中搜索类似的机密 - 自动应用先前做出的决定 - 保存带有继承状态的新机密 - 将扫描状态更新为 "completed" ### 4. 分析与管理 - 用于查看带有筛选功能的结果的 Web 界面 - 批量更改状态操作 - 导出 HTML/JSON 格式的报告 - 所有用户操作的审计系统 ## 数据库 ### 主要表 **Projects** - 仓库信息 - 通过 `created_by` 与用户关联 **Scans** - 所有扫描的历史记录 - 状态:pending, running, completed, failed, timeout - 元数据:commit、文件数、执行时间 **Secrets** - 发现的带有上下文的机密 - 处理状态和排除系统 - 用户操作审计 **Users** - 身份验证与授权 - 角色:普通用户和管理员 ### 优化 - 用于快速搜索相似机密的复合索引 - 基于 scan_id、severity、type 的索引以进行过滤 - 大数据集的结果分页 ## 安全 ### 身份验证 - 具有可配置生命周期的 JWT token - 用于存储 token 的 Secure cookies - 自动删除无效 token ### 授权 - 对所有受保护路由进行 token 验证的 Middleware - 管理功能仅限 admin 角色 - 用于服务间通信的 API 密钥 ### 数据保护 - 清理所有用户输入 - URL 验证与转义 ## 管理 ### 用户管理 - 创建/删除用户(仅限 admin) - 带验证的密码修改 - 查看活动日志 ### 备份 - 按计划自动备份 - 可配置的保留期限 - 手动创建备份 - 备份系统状态监控 ### 监控 - 检查微服务可用性 - 自动检测卡住的扫描 (timeout) ## API 集成 ### 微服务 API - `/scan` - 远程扫描 - `/local_scan` - 上传 ZIP 文件 - `/multi_scan` - 多重扫描 - `/health` - 可用性检查 - 通过 REST API 配置规则 ## 部署 ### 环境变量 ``` DATABASE_URL=sqlite:///./database/secrets_scanner.db USERS_DATABASE_URL=sqlite:///./Auth/users.db APP_HOST=127.0.0.1 APP_PORT=8000 MICROSERVICE_URL=http://127.0.0.1:8001 API_KEY=your_api_key SECRET_KEY=your_secret_key ``` ### 首次运行 1. 安装依赖:`pip install -r requirements.txt` 2. 运行设置向导:`python run.py` 3. 自动创建数据库结构和管理员 4. 配置微服务连接参数 ### 扩展 - 支持 PostgreSQL - 长耗时操作的异步处理
标签:API密钥泄露, AV绕过, Credential Dumping, DevSecOps, DInvoke, FastAPI, Jinja2模板, PostgreSQL, Python, Redis利用, SQLite, 上游代理, 代码安全, 代码泄露检测, 加密, 安全助手, 对抗攻击, 微服务架构, 敏感信息检测, 数据泄露, 数据防泄漏 (DLP), 无后门, 机器学习分类, 机密扫描, 测试用例, 源代码审计, 漏洞扫描器, 漏洞枚举, 逆向工具, 静态应用程序安全测试 (SAST)