pradeep-git-dev/API-Security-Scanner
GitHub: pradeep-git-dev/API-Security-Scanner
API Sentinel 是一款基于异步引擎与生成式 AI 的 REST API 安全扫描器,用于自动化探测 OWASP 漏洞并提供 AI 驱动的代码级修复方案。
Stars: 1 | Forks: 0
# API Sentinel 🛡️
### 基于 AI 的 API 安全漏洞扫描器
API Sentinel 是一个专业、高性能的 Web 应用程序,旨在自动审计、分析和保护 REST API。它针对目标 endpoint 运行高速、异步的安全探测,并集成 **Google Gemini AI**,以提供对开发者友好的说明、风险评估影响以及安全的代码修复方案。
## 🏗️ 架构与数据流
API Sentinel 采用现代的 5 层架构,将表现层、编排层、扫描层和智能层分离,以实现最佳性能和可扩展性。
```
+------------------+ HTTPS / JSON +---------------------+
| | ---------------------> | |
| Next.js Client | | Express Gateway |
| (TypeScript) | <--------------------- | (Orchestrator) |
| | JWT Authed | |
+------------------+ +---------------------+
|
| Proxy Request
v
+------------------+ Asynchronous HTTP +---------------------+
| | <--------------------- | |
| Target API | | FastAPI Engine |
| (Under Test) | ---------------------> | (Python Scanner) |
| | Responses | |
+------------------+ +---------------------+
|
| MongoDB
v
+---------------------+
| |
| Google Gemini AI |
| (Threat Intelligence)
+---------------------+
```
## 🔄 端到端应用程序工作流
API Sentinel 在高度协调的多步骤扫描和智能 pipeline 上运行。以下是分步工作流:
```
graph TD
A["User/Frontend Dashboard"] -->|1. Setup Target & Auth Config| B("Express Gateway Backend")
B -->|2. Persist Target / Set Status: PENDING| C[("MongoDB Database")]
B -->|3. Trigger Scan Request| D("FastAPI Python Scanner")
subgraph FastAPI Scanning Suite
D -->|4a. URL & Input Validation| E["Validator Modules"]
D -->|4b. Fingerprint Server, TLS, & Framework| F["Fingerprint Module"]
D -->|4c. Parse Endpoint Path Tree| G["OpenAPI Parser"]
D -->|4d. Run Parallel Probes| H["Vulnerability Check Engines"]
end
H -->|SQLi, JWT, CORS, Rate Limit, Data Exposure| I["Raw Scan Findings"]
I -->|5. Return JSON Report Payload| B
subgraph AI Security Enrichment
B -->|6a. Send Raw Vulnerabilities| J["Google Gemini AI Engine"]
J -->|6b. Generate Contextual Remediation & Fixes| K["Enriched Findings"]
end
K -->|7. Calculate Scoring & Posture Drift| B
B -->|8. Persist Findings & PDF Report| C
B -->|9. Update Status: COMPLETED| A
A -->|10. View Interactive Reports & Download PDF| L["User UI / PDFKit Report"]
```
### 详细执行阶段分解
1. **扫描初始化 (前端与后端)**
* 用户在 Next.js Dashboard 中注册目标 API URL。用户可以选择配置身份验证标准(例如 Bearer token、Custom Header、Basic Auth)并上传 OpenAPI 规范。
* Next.js 前端向 Express 后端网关发送一个 `POST /scan` payload。
* Express 后端验证请求 schema(使用 Zod),在 **MongoDB** 中保存一个初始化为 `PENDING` 状态的扫描实例,并返回扫描信息。
2. **触发扫描与环境侦察 (后端到 FastAPI)**
* 当用户点击 **开始扫描** 时,前端会发送一个 `POST /scan/start/:id` 请求,其中包含临时凭据(从不存储在数据库中)。
* 后端将数据库扫描状态设置为 `SCANNING`,并将请求路由到高性能的 Python FastAPI 服务。
* Scanner 立即运行 URL 验证,并检查是否强制执行了 TLS/HTTPS。
* **Fingerprinting Engine** 分析 header 和响应特征,以推断目标服务器(例如 Nginx、Apache)、应用程序框架(例如 Express、FastAPI)、托管环境(例如 AWS、Heroku)以及连接延迟。
3. **发现与爬取树解析**
* 如果提供了 OpenAPI 规范,scanner 会对其进行解析,以提取每个声明的路由和支持的 HTTP 动词(GET、POST 等),并将它们映射为 endpoint 树。
* 如果未提供 OpenAPI 规范,它将定位到主根 URL。
* 为了保持扫描的快速和优化,scanner 会编译一个包含最多 10 个唯一目标 endpoint 的列表,以进行并行查询。
4. **漏洞探测与安全测试套件**
* Scanner 生成异步 HTTP 客户端任务 (`aiohttp`),使用专用的检查模块检查每个目标 endpoint:
* **SQL 注入 (SQLi)**:使用 SQL 语法泄露和盲注延时查询测试输入参数。
* **失效的身份验证与 JWT 检查**:检查授权机制,分析 token 是否存在弱签名密钥或 "none" 算法绕过。
* **过度数据暴露**:根据正则表达式列表评估响应体,查找泄露的环境文件、AWS 密钥、数据库连接字符串、JWT 和私钥。
* **CORS 策略**:探测 header 以检测通配符 (`*`) 或未反射的源漏洞。
* **速率限制检查**:向 endpoint 发起洪水请求,以确定是否具有速率限制拦截 (HTTP 429) 或节流功能。
* **HTTP 安全标头**:检查标准防御性 header(CSP、HSTS、X-Frame-Options、X-Content-Type-Options)。
5. **AI 增强与修复方案生成 (Gemini AI)**
* FastAPI scanner 打包所有安全检查结果,计算安全分数,并将 payload 返回给后端。
* Express 后端接收原始结果,并过滤掉通过的检查和信息性消息。
* 对于发现的每个实际漏洞,后端都会调用 **Google Gemini AI**(使用 Gemini 1.5/3.5 Flash)。
* Gemini 分析原始漏洞上下文并生成:
* 面向开发者的风险描述。
* 解释攻击者如何利用它的影响评估。
* 用于修复漏洞的精确安全重构块(代码补丁)。
* 这些丰富的信息将被动态保存回数据库。
6. **历史状态比较 (漂移分析)**
* 后端查询数据库,查找用户针对同一目标 URL 之前完成的扫描。
* 比较服务执行 **漂移分析** 以计算安全分数的变化,识别新的漏洞,并标记已解决的问题。
7. **PDF 报告与前端呈现**
* Express 后端利用 `PDFKit` 编译一份专业、可打印的 PDF 审计报告,其中包含直观的安全分数、类别细分和 AI 生成的代码补丁。
* 扫描状态更改为 `COMPLETED`。Next.js dashboard 接收更新并呈现动态图表、严重性指示器、带有安全修复的交互式代码编辑器,以及 PDF 报告的下载链接。
## ✨ 功能
* **安全的身份验证**:内置注册、登录和基于 token 的状态保留功能,使用 JSON Web Tokens (JWT) 和安全的 cookie 备份。
* **异步 API 扫描**:对 endpoint 运行高速并行探测,无阻塞地检测漏洞。
* **基于 OWASP 的安全检查**:
* **传输层安全**:验证 SSL/TLS 强制执行情况,并识别未加密的 HTTP 通道。
* **HTTP 安全标头**:检查缺失的防御性 header(`Content-Security-Policy`、`X-Frame-Options`、`X-Content-Type-Options`、`Strict-Transport-Security`)。
* **SQL 注入 (SQLi)**:探测 endpoint 是否存在 SQL 语法错误泄露和时间延迟漏洞。
* **过度数据暴露**:分析响应中是否存在泄露的机密、凭据、API 密钥或完整的数据库记录投影。
* **失效的 JWT 验证**:测试是否存在弱签名密钥、不安全的算法或 `'none'` 算法绕过。
* **速率限制检查**:审计 endpoint 是否具有防止 API 滥用的保护。
* **基于 AI 的威胁分析**:提供人类可读的安全风险描述以及可直接复制粘贴的安全代码重构片段。
* **专业的 PDF 报告**:导出格式精美的 PDF 评估报告,包括安全分数、严重性卡片细分和 AI 修复方案。
* **自文档化 API**:开箱即用的完全交互式 Swagger UI,用于测试后端 endpoint。
## 🛠️ 技术栈
* **前端**:Next.js 14、TypeScript、Tailwind CSS、Lucide Icons、Axios。
* **后端**:Node.js、Express、TypeScript、Mongoose、Swagger UI、PDFKit。
* **Scanner**:Python 3、FastAPI、Uvicorn、aiohttp、asyncio。
* **数据库**:MongoDB (Mongoose ODM)。
* **AI 核心**:Google Gemini AI(通过 `@google/generative-ai` SDK),具有高质量的离线回退机制。
## 🚀 安装与设置
确保您已在本地安装并运行 **Node.js (v18+)**、**Python (v3.9+)** 和 **MongoDB**。
### 1. 数据库设置
确保 MongoDB 在本地以默认端口运行:
```
mongodb://localhost:27017/
```
### 2. 后端网关
1. 导航到 `backend/` 目录:
cd backend
2. 安装依赖项:
npm install
3. 从模板创建一个 `.env` 文件:
cp .env.example .env
4. 更新 `.env` 中的变量(添加您的 `GEMINI_API_KEY` 以进行实时的 AI 生成;如果留空,应用程序将自动回退到其强大的离线安全知识库)。
5. 启动开发服务器:
npm run dev
*后端将在 **`http://localhost:5000`** 上启动。*
### 3. FastAPI Scanner 引擎
1. 导航到 `scanner/` 目录:
cd scanner
2. 创建一个 Python 虚拟环境并激活它:
python -m venv venv
# 在 Windows 上:
.\venv\Scripts\activate
# 在 macOS/Linux 上:
source venv/bin/activate
3. 安装所需的 Python 库:
pip install -r requirements.txt
4. 启动 FastAPI 服务:
uvicorn app:app --reload
*Scanner 服务将在 **`http://localhost:8000`** 上启动。*
### 4. 前端应用程序
1. 导航到 `frontend/` 目录:
cd frontend
2. 安装依赖项:
npm install
3. 启动 Next.js 开发服务器:
npm run dev
*前端将在 **`http://localhost:3000`** 上启动。*
## 📈 截图
### 1. 安全身份验证
*使用受 JWT 保护的路由守卫注册并验证会话。*
*(占位符:`public/screenshots/login.png`)*
### 2. 交互式 Dashboard
*分析所有配置的目标范围,检查平均安全状况分数,并跟踪最近的运行记录。*
*(占位符:`public/screenshots/dashboard.png`)*
### 3. 详细的扫描结果与 AI 建议
*深入特定的 endpoint 以查看原始结果、置信度指标以及 Gemini AI 生成的安全代码块。*
*(占位符:`public/screenshots/scan_details.png`)*
### 4. 专业的 Swagger 文档
*在 `/api/docs` 实时探索并与后端路由进行交互。*
*(占位符:`public/screenshots/swagger.png`)*
### 5. 导出的 PDF 安全评估报告
*下载一份样式精美、可打印的 PDF 评估报告,供利益相关者审阅。*
*(占位符:`public/screenshots/pdf_report.png`)*
## 🧭 API 参考
API Sentinel 是自文档化的。启动后端服务器并导航至:
```
http://localhost:5000/api/docs
```
### 主要 Endpoint
* **健康检查**:`GET /health`(返回网关健康状况和版本)
* **身份验证**:
* `POST /auth/register`(创建新账户)
* `POST /auth/login`(验证凭据)
* `GET /profile`(获取会话个人资料详情)
* **Scanner**:
* `POST /scan`(注册目标 URL)
* `GET /scans`(获取用户扫描目标和统计信息)
* `GET /scan/{id}`(获取目标结果和 AI 分析)
* `POST /scan/start/{id}`(触发安全探测执行)
* `GET /scan/{id}/pdf`(下载格式化的 PDF 评估报告)
## 🔮 未来路线图
API Sentinel 的设计充分考虑了可扩展性。未来版本计划推出的主要功能包括:
1. **OpenAPI 文件上传**:允许用户上传 `openapi.json` 文件,以自动解析、映射和扫描所有已记录的 endpoint。
2. **基于队列的扫描**:实施 **Redis** 和 **BullMQ** 将扫描作为后台作业运行,支持更长的超时限制和队列调度。
3. **WebSockets 集成**:使用 **Socket.io** 将实时的扫描进度更新和探测日志直接流式传输到 dashboard。
4. **额外的 OWASP API 检查**:增加针对失效的对象级授权 (BOLA)、失效的功能级授权 (BFLA) 和 SSRF 的专用模糊测试。
标签:API安全扫描器, AV绕过, DevSecOps, DOE合作, FastAPI, 上游代理, 生成式AI, 索引, 自动化攻击, 逆向工具