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, 域名枚举, 搜索引擎查询, 测试用例, 请求拦截