donny-devops/threathunter-api

GitHub: donny-devops/threathunter-api

一个基于 FastAPI 的生产级漏洞情报聚合平台,提供 CVE 数据的实时同步、CVSS 风险评分、多维查询和自动化告警能力。

Stars: 0 | Forks: 0

# ThreatHunter API **漏洞情报平台** — 一个生产级的 FastAPI 服务,用于聚合、评分和查询 CVE 数据,提供基于 CVSS 的风险分析,并支持从 NIST 国家漏洞数据库(NVD)实时同步。 ![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-0.115-009688?logo=fastapi&logoColor=white) ![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-2.0-D71F00?logo=sqlalchemy&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green) ## 功能 - **完整的 CRUD API** — 通过 RESTful endpoint 创建、读取、更新和删除漏洞记录 - **NVD 实时同步** — 后台从 NIST NVD 2.0 API 导入数据,支持可配置的关键词种子 - **CVSS 风险评分** — 基于 CVSS v3.1/v3.0/v2.0 分数自动进行严重性分类,并提供人类可读的风险评级 - **高级过滤** — 支持按严重等级、CVSS 分数范围,以及对描述/厂商/产品的关键词搜索进行查询 - **分页结果** — 基于 offset 的分页,提供总数和页面元数据 - **仪表盘分析** — 聚合统计 endpoint,包含严重性分布、CVSS 平均值和最新 CVE 跟踪 - **全异步架构** — 基于 async SQLAlchemy + aiosqlite,实现非阻塞 I/O - **Docker 开箱即用** — 支持单命令部署,包含健康检查和持久化卷 - **CI/CD Pipeline** — GitHub Actions 工作流,包含代码检查、类型检查、多版本测试和 Docker 冒烟测试 ## 技术栈 | 层级 | 技术 | |-------|-----------| | 框架 | FastAPI 0.115+ | | ORM | SQLAlchemy 2.0 (async) | | 数据库 | SQLite (aiosqlite) — 可无缝切换至 PostgreSQL | | 数据验证 | Pydantic v2 | | HTTP Client | httpx (async) | | 测试 | pytest + pytest-asyncio | | 代码检查 | Ruff | | 类型检查 | mypy (strict mode) | | 容器化 | Docker + Docker Compose | | CI/CD | GitHub Actions | ## 快速开始 ### 本地开发 ``` # Clone 代码仓库 git clone https://github.com/donny-devops/threathunter-api.git cd threathunter-api # 创建虚拟环境 python -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\Activate.ps1 # Windows PowerShell # 安装依赖 pip install -e ".[dev]" # 配置环境 cp .env.example .env # 编辑 .env — 可选添加你的 NVD API key 以获得更高的速率限制 # 运行服务器 uvicorn src.main:app --reload --port 8000 ``` ### Docker ``` # 构建并运行 docker compose up --build -d # 健康检查 curl http://localhost:8000/health ``` ## API 参考 服务启动后,可通过以下地址访问交互式文档: - **Swagger UI** → `http://localhost:8000/docs` - **ReDoc** → `http://localhost:8000/redoc` ### Endpoints | 方法 | Endpoint | 描述 | |--------|----------|-------------| | `GET` | `/health` | 存活探针 | | `GET` | `/api/v1/vulnerabilities` | 列出 CVE(支持分页和过滤) | | `GET` | `/api/v1/vulnerabilities/{cve_id}` | 根据 ID 获取单个 CVE | | `POST` | `/api/v1/vulnerabilities` | 手动创建 CVE 记录 | | `PATCH` | `/api/v1/vulnerabilities/{cve_id}` | 局部更新 | | `DELETE` | `/api/v1/vulnerabilities/{cve_id}` | 删除 CVE 记录 | | `GET` | `/api/v1/dashboard` | 聚合分析 | | `POST` | `/api/v1/sync` | 触发 NVD 同步 | ### 查询参数(列表 Endpoint) | 参数 | 类型 | 描述 | |-----------|------|-------------| | `page` | int | 页码(默认:1) | | `page_size` | int | 每页结果数,1–100(默认:25) | | `severity` | string | 过滤条件:CRITICAL, HIGH, MEDIUM, LOW | | `keyword` | string | 搜索 CVE ID、描述、厂商、产品 | | `min_cvss` | float | 最低 CVSS 分数(0–10) | | `max_cvss` | float | 最高 CVSS 分数(0–10) | ### 示例请求 ``` # 列出严重漏洞 curl "http://localhost:8000/api/v1/vulnerabilities?severity=CRITICAL&page_size=10" # 搜索 SQL injection CVEs curl "http://localhost:8000/api/v1/vulnerabilities?keyword=SQL+injection" # 获取仪表盘统计信息 curl http://localhost:8000/api/v1/dashboard # 使用自定义关键字触发 NVD 同步 curl -X POST "http://localhost:8000/api/v1/sync?keyword=privilege+escalation" # 创建手动 CVE 条目 curl -X POST http://localhost:8000/api/v1/vulnerabilities \ -H "Content-Type: application/json" \ -d '{ "cve_id": "CVE-2024-99999", "description": "Critical RCE in ExampleLib allowing unauthenticated remote code execution.", "severity": "CRITICAL", "cvss_score": 9.8, "cwe_id": "CWE-78", "vendor": "example_corp", "product": "example_lib" }' ``` ## 测试 ``` # 运行完整测试套件 pytest -v # 运行并生成覆盖率报告 pytest --cov=src --cov-report=term-missing -v # Lint ruff check src/ tests/ # Type check mypy src/ --ignore-missing-imports ``` ## 项目结构 ``` threathunter-api/ ├── .github/workflows/ci.yml # CI/CD pipeline ├── src/ │ ├── main.py # FastAPI app + lifespan │ ├── config.py # Pydantic settings │ ├── database.py # Async SQLAlchemy engine │ ├── models.py # ORM models │ ├── schemas.py # Pydantic request/response schemas │ ├── routers/ │ │ ├── vulnerabilities.py # CRUD endpoints │ │ ├── dashboard.py # Analytics endpoint │ │ └── sync.py # NVD sync trigger │ └── services/ │ ├── vuln_service.py # Business logic + risk scoring │ └── sync_service.py # NVD API integration ├── tests/ │ └── test_api.py # 14 async integration tests ├── Dockerfile ├── docker-compose.yml ├── pyproject.toml ├── .env.example └── .gitignore ``` ## 开源协议 MIT — 详情请参阅 [LICENSE](LICENSE)。
标签:AV绕过, FastAPI, GPT, REST API, SIEM集成, 威胁情报, 威胁情报集成, 安全规则引擎, 开发者工具, 漏洞管理, 请求拦截, 运行时操纵, 逆向工具