gustavogeraldelli/dependency-vulnerability-scanner
GitHub: gustavogeraldelli/dependency-vulnerability-scanner
基于 Spring Boot 微服务架构的分布式 Maven 依赖漏洞扫描器,通过 RabbitMQ 异步编排和 Google OSV API 实现 pom.xml 依赖组件的已知漏洞批量检测。
Stars: 0 | Forks: 0
# pom-vuln-scanner
## 架构概述
系统使用 RabbitMQ 连接三个独立的服务:
* `scan-ingestion`(端口 8080):通过 multipart 上传接收 `pom.xml` 文件,提取依赖列表,并将 payload 发布到消息代理。
* `vuln-worker`(端口 8081):消费 `scan.requested.queue`,并编排并行、受速率限制的 HTTP 请求到 Google OSV API,以扫描每个依赖的已知漏洞。
* `scan-results`(端口 8082):监听漏洞发现并将扫描结果持久化到 PostgreSQL 中。
RabbitMQ 使用单一的 domain exchange 来处理扫描事件:
```
scan.events.exchange
scan.requested -> scan.requested.queue
vulnerability.finding.created -> vulnerability.finding.queue
```
## API
```
POST /api/v1/scan/maven
```
## 技术栈
* Java 25
* Spring Boot 4.0.6
* RabbitMQ
* PostgreSQL & Spring Data JPA
* Resilience4j(Rate Limiting)
* Spring RestClient
## 运行方式
### 1. 基础设施
使用 Docker Compose 启动所需的 container:
```
docker-compose up -d
```
* RabbitMQ Management:`http://localhost:15672` (admin / admin123)
* PostgreSQL 数据库:`jdbc:postgresql://localhost:5432/threat_hub_db`
### 2. 应用程序
使用提供的自动化脚本同时运行所有三个微服务。
为脚本赋予执行权限:
```
chmod +x run.sh
```
执行脚本:
```
./run.sh
```
要停止所有后台服务并释放网络端口,请按 `Ctrl+C`。
## 项目路线图
* [x] 创建微服务结构
* [x] 读取并解析 XML 文件 (`scan-ingestion`)
* [x] 设置 RabbitMQ 队列和消息路由
* [x] 并行处理 OSV API 调用以加快扫描速度 (`vuln-worker`)
* [x] 添加 Rate Limiting 以防止 API 被封锁
* [x] 将扫描结果保存到 PostgreSQL 数据库中 (`scan-results`)
* [ ] 添加 Discord Webhook 以发送实时警报
标签:JS文件枚举, RabbitMQ, Redis, Spring Boot, 域名枚举, 搜索引擎查询, 测试用例, 请求拦截