Christophep52/saas-vulnerability-scanner

GitHub: Christophep52/saas-vulnerability-scanner

基于 TruffleHog 引擎的 SaaS 密钥泄露扫描平台,采用 FastAPI 和 React 构建分布式架构,支持实时漏洞推送与异步并发扫描。

Stars: 0 | Forks: 0

# 🛡️ SaaS 漏洞扫描器 [![CI/CD 流水线](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f9b40db451225508.svg)](https://github.com/Christophep52/saas-vulnerability-scanner/actions/workflows/main.yml) [![Python](https://img.shields.io/badge/Python-3.11+-3776AB.svg?logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-009688.svg?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![React](https://img.shields.io/badge/React-19.x-61DAFB.svg?logo=react&logoColor=white)](https://react.dev/) [![Redis](https://img.shields.io/badge/Redis-7.x-DC382D.svg?logo=redis&logoColor=white)](https://redis.io/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15-4169E1.svg?logo=postgresql&logoColor=white)](https://www.postgresql.org/) [![Celery](https://img.shields.io/badge/Celery-Workers-37814A.svg?logo=celery&logoColor=white)](https://docs.celeryq.dev/) [![Docker](https://img.shields.io/badge/Docker_Compose-Orquestrado-2496ED.svg?logo=docker&logoColor=white)](https://www.docker.com/) [![License: MIT](https://img.shields.io/badge/Licença-MIT-yellow.svg)](LICENSE) ![Dashboard 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5329cefa36225514.png) ## 🏗️ 架构概述 这不是一个简单的脚本——它是一个**具有明确职责分离的生产级分布式系统**: ``` ┌──────────────────────────────────────────────────────────────────┐ │ FRONTEND (React 19) │ │ Vite · Tailwind CSS v4 · Recharts · Cliente WebSocket │ │ Servido via Nginx (Porta 80) │ └──────────────────────┬──────────────────┬────────────────────────┘ │ API REST │ WebSocket ▼ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ BACKEND (FastAPI / ASGI) │ │ OAuth 2.0 · JWT Auth · SQLAlchemy ORM · Pub/Sub │ │ Uvicorn (Porta 8000) │ └──────┬──────────────┬──────────────────┬────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌────────────┐ ┌───────────┐ ┌─────────────────────────────────┐ │ PostgreSQL │ │ Redis │ │ Celery Worker (N nós) │ │ (Porta │ │ Broker + │ │ Motor TruffleHog │ │ 5432) │ │ Pub/Sub │ │ Simulador de Notificações │ │ │ │ (Porta │ │ Resultados → Redis Pub/Sub → │ │ Histórico │ │ 6379) │ │ → WebSocket → React │ │ de Scans │ │ │ │ │ └────────────┘ └───────────┘ └─────────────────────────────────┘ ``` ## ✨ 技术亮点 ### 1. 基于 WebSockets + Redis Pub/Sub 的实时流 前端无需对 REST 端点进行轮询,而是为每次扫描开启一个持久的 WebSocket 连接。Celery worker 将每个发现发布到 Redis Pub/Sub 频道,FastAPI 服务器再将这些事件转发给浏览器——**在发现漏洞的同时**,在表格和 Recharts 仪表盘中实时渲染,实现零延迟。 ### 2. 异步作业队列 (Celery + Redis) 扫描操作是 CPU 和 I/O 密集型的。系统不会阻塞 API 服务器,而是将扫描请求通过 Redis 作为消息代理分发到 **Celery worker 池**。这意味着系统能够处理数千个并发请求,而不会降低 API 的响应时间。 ### 3. GitHub OAuth 2.0 认证 平台实现了完整的 OAuth 2.0 授权码流程: - `GET /auth/github/login` → 重定向到 GitHub 授权同意页面 - `GET /auth/github/callback` → 将授权码交换为 GitHub 的 access token,获取用户资料数据,并签发签名的 **JWT** 用于会话管理 - 所有扫描端点均受保护——未认证的请求将收到 `HTTP 401` ### 4. 失败设计 (优雅降级) 如果 TruffleHog 二进制文件或 Docker 守护进程不可用,系统不会崩溃。它会静默激活 **演示模式**,将合成的漏洞数据注入流水线——确保演示环境、CI 环境和依赖的前端永远保持在线。 ### 5. CI/CD 流水线 (GitHub Actions) 每次推送都会触发自动化的质量关卡: - **后端**:Python 3.11 环境及 Redis 服务容器 → 安装依赖 → 运行 `pytest`,包含 6 个测试用例,覆盖 OAuth 流程、JWT 验证、端点保护和 API schema 完整性 - **前端**:Node.js 20 → `npm ci` → 生产环境构建 (Vite + Tailwind CSS v4) ## 🧰 技术栈 | 层级 | 技术 | 用途 | |--------|-----------|------------| | **前端** | React 19, Vite 8, Tailwind CSS v4, Recharts | 带实时仪表盘的 SPA | | **后端** | FastAPI, Uvicorn (ASGI), SQLAlchemy | 带 ORM 的异步 API 服务器 | | **认证** | GitHub OAuth 2.0, python-jose (JWT) | 无状态认证 | | **数据库** | PostgreSQL 15 (生产环境) / SQLite (开发环境备用) | 持久化扫描历史 | | **队列** | Celery, Redis 7 | 异步处理与 Pub/Sub | | **扫描器** | TruffleHog (via Docker) | 密钥检测引擎 | | **基础设施** | Docker Compose, Nginx, GitHub Actions | 编排与 CI/CD | ## 🚀 如何运行 ### 选项 1:Docker Compose(推荐) 所有基础设施——数据库、缓存、worker、API 和前端——都可以通过单个命令启动。无需在本地安装 Python 或 Node.js。 ``` # 克隆仓库 git clone https://github.com/Christophep52/saas-vulnerability-scanner.git cd saas-vulnerability-scanner # (可选) 配置 GitHub OAuth cp .env.example .env # 使用你的 GITHUB_CLIENT_ID 和 GITHUB_CLIENT_SECRET 编辑 .env # 构建并启动所有服务 docker-compose up --build -d ``` ### 选项 2:本地开发(热重载) **后端:** ``` cd backend python -m venv venv # Windows: .\venv\Scripts\activate | Linux/Mac: source venv/bin/activate pip install -r requirements.txt uvicorn main:app --reload --port 8000 ``` **前端:** ``` cd frontend npm install npm run dev ``` ## 🔐 OAuth 配置(可选) 要启用真正的 GitHub 认证: 1. 前往 **GitHub → Settings → Developer Settings → OAuth Apps → New OAuth App** 2. 将 **Homepage URL** 设置为 `http://localhost:8000` 3. 将 **Callback URL** 设置为 `http://localhost:8000/auth/github/callback` 4. 复制 `Client ID` 和 `Client Secret` 到您的 `.env` 文件中 ## 🧪 测试 ``` cd backend pytest tests/ -v ``` ``` tests/test_api.py::test_github_login_redirect_sem_credenciais PASSED tests/test_api.py::test_github_callback_sem_access_token PASSED tests/test_api.py::test_iniciar_scan_sem_autenticacao PASSED tests/test_api.py::test_iniciar_scan_com_autenticacao PASSED tests/test_api.py::test_iniciar_scan_com_token_invalido PASSED tests/test_api.py::test_openapi_schema_disponivel PASSED 6 passed ``` ## 📁 项目结构 ``` saas-vulnerability-scanner/ ├── .github/workflows/main.yml # Pipeline CI/CD (pytest + vite build) ├── backend/ │ ├── main.py # App FastAPI, rotas OAuth, handler WebSocket │ ├── scanner.py # Task Celery: scan TruffleHog + Redis Pub/Sub │ ├── celery_app.py # Configuração do worker Celery │ ├── models.py # Modelos ORM SQLAlchemy (Scan, Vulnerabilidade) │ ├── schemas.py # Schemas de validação Pydantic │ ├── database.py # Engine do banco (PostgreSQL / fallback SQLite) │ ├── tests/test_api.py # 6 casos de teste (OAuth, JWT, endpoints, schema) │ ├── requirements.txt # Dependências Python │ └── Dockerfile # Imagem do container backend ├── frontend/ │ ├── src/App.jsx # SPA React (Tela de Login, Dashboard, WebSocket) │ ├── src/index.css # Entry point Tailwind CSS v4 │ ├── Dockerfile # Build multi-stage (Node → Nginx) │ └── package.json # Dependências do frontend ├── docker-compose.yml # Orquestração full stack (5 serviços) ├── .env.example # Template de variáveis de ambiente └── README.md ``` ## 🛣️ 路线图 - [x] 通过 WebSockets 实时流式传输漏洞 - [x] 使用 Celery + Redis 进行异步扫描处理 - [x] 通过 SQLAlchemy ORM 进行 PostgreSQL 持久化 - [x] 带有 JWT 会话的 GitHub OAuth 2.0 认证 - [x] 使用 GitHub Actions 的 CI/CD 流水线 - [x] 优雅降级(回退到演示模式) - [x] Docker Compose 编排(5 服务堆栈) - [ ] 使用 Alembic 进行数据库迁移 - [ ] 扫描完成后通过 SMTP 发送电子邮件通知 - [ ] 多租户扫描历史仪表盘 - [ ] 速率限制和 API 密钥管理 ## 📄 许可证 本项目采用 MIT 许可证授权——详情请参阅 [LICENSE](LICENSE) 文件。 *旨在展示在分布式系统架构、实时数据管道和现代 DevOps 实践方面的专业能力而设计与构建。*
标签:AV绕过, Celery, Docker, Docker Compose, FastAPI, GPT, MIT开源协议, Mutation, Nginx, PostgreSQL, Python, React, Recharts, Redis, SaaS, SaaS安全, Syscalls, Tailwind CSS, Vite, WebSocket, Web安全, 仪表板, 仪表盘, 任务队列, 企业级安全, 依赖分析, 分布式系统, 前后端分离, 加密, 可视化, 响应大小分析, 安全防御评估, 密码管理, 插件系统, 搜索引擎查询, 无后门, 测试用例, 漏洞扫描器, 漏洞管理, 网络安全, 蓝队分析, 请求拦截, 逆向工具, 隐私保护