AjayZordan/NexLock
GitHub: AjayZordan/NexLock
由 AI 驱动并深度集成 CI/CD 的依赖项漏洞扫描工具,通过实时检测、Slack 告警与自动创建 GitHub PR 打通漏洞发现与修复的全流程闭环。
Stars: 0 | Forks: 0
# 🔐 Nexlock
**检测。告警。修复。**
一款由 AI 驱动、集成 CI/CD 的依赖项漏洞扫描工具,可自动检测代码库中已知的安全漏洞,实时向团队发出警报,并自动创建 GitHub Pull Request —— 从而消除漏洞发现与修复之间的鸿沟。









🔗 **在线 Dashboard:** [nex-lock-rho.vercel.app](https://nex-lock-rho.vercel.app)
## 📌 问题背景
依赖项不断被添加到代码库中,带有漏洞的版本往往会在不知不觉中被引入,直到发生数据泄露。大多数团队要么根本没有扫描已知的 CVE,要么只是偶尔进行手动扫描 —— 这在漏洞被公开披露到实际被修补之间留下了极大的时间窗口。
## 💡 解决方案
Nexlock 将整个漏洞生命周期自动化。它接入代码库的 CI/CD pipeline,根据实时的漏洞数据库 (OSV.dev) 扫描每一个依赖项,按严重程度对每个发现进行评分,通过 Slack 向团队发送警报,自动创建 GitHub PR 标记问题,并将完整的扫描历史记录存储在数据库中,为实时 Web Dashboard 和面向高管的 Power BI 报告提供数据支持。
## ✨ 核心功能
- 🔍 **实时漏洞情报** — 通过 OSV.dev API 对每个依赖项进行实时 CVE 查询
- 📊 **严重性评分** — 基于 CVSS 划分为 Critical / High / Medium / Low
- ⚡ **SQLite 缓存** — 避免对先前已扫描的 package 版本进行多余的 API 查询
- 💬 **Slack 告警** — 发现漏洞的瞬间即发送格式化的即时通知
- 🔧 **自动化 GitHub PR** — 自动创建 Pull Request 标记出有漏洞的依赖项
- 🤖 **AI 生成的解释** — 集成 Gemini API 提供通俗易懂的漏洞摘要
- 🗄️ **持久化扫描历史** — 每次扫描结果都存储在 MongoDB Atlas 中
- 📈 **实时 Dashboard** — 基于 Next.js 的 Dashboard,提供实时的严重性分类和扫描流
- 🔄 **CI/CD 自动化** — GitHub Actions 在每次 push 时触发全面扫描
- 🐳 **Docker 化的微服务** — 扫描器作为可移植的容器化服务运行
- 📉 **Power BI 报告** — 面向高管的严重性和趋势可视化图表
## 🏗️ 系统架构
本系统采用由共享数据层连接的双服务架构:
| 层级 | 职责 |
|---|---|
| 🎨 表现层 | 实时 Dashboard (Next.js,部署于 Vercel) |
| 🔄 自动化层 | GitHub Actions CI/CD,GitHub PR 自动化 |
| ⚙️ 服务层 | 依赖解析,OSV.dev 扫描,严重性评分,Gemini AI 解释 |
| 🗄️ 数据层 | MongoDB Atlas (持久化历史记录),SQLite (本地缓存) |
| 📊 报告层 | Power BI (高管 Dashboard) |
### 架构图
```
flowchart TD
A["👨💻 Developer Push"] --> B["⚙️ GitHub Actions CI/CD"]
B --> C["🐍 Flask Scanner Microservice (Docker)"]
C --> D["📦 Parse package.json"]
D --> E["🔍 OSV.dev Vulnerability Check"]
E --> F["⚡ SQLite Cache Layer"]
E --> G["📊 Severity Scoring (CVSS)"]
G --> H["🤖 Gemini AI Explanation"]
G --> I["🗄️ MongoDB Atlas Storage"]
G --> J["💬 Slack Alert"]
G --> K["🔧 GitHub Auto-PR"]
I --> L["📈 Next.js Dashboard (Vercel)"]
I --> M["📉 Power BI Executive Report"]
style A fill:#1f2937,stroke:#4ce0e6,color:#fff
style B fill:#2088FF,stroke:#0a1a28,color:#fff
style C fill:#3776AB,stroke:#0a1a28,color:#fff
style E fill:#0a1a28,stroke:#4ce0e6,color:#fff
style I fill:#47A248,stroke:#0a1a28,color:#fff
style L fill:#000000,stroke:#4ce0e6,color:#fff
style M fill:#F2C811,stroke:#0a1a28,color:#000
```
### 流程说明
代码 Push → GitHub Actions → Flask Scanner
→ 解析 package.json → 查询 OSV.dev → 缓存至 SQLite
→ 评估严重性 → 保存至 MongoDB
→ Slack 告警 + 自动创建 GitHub PR
→ Next.js Dashboard (实时视图) → Power BI (高管报告)
## 🛠️ 技术栈
| 分类 | 工具 |
|---|---|
| 前端 | Next.js, React, Tailwind CSS |
| 托管 | Vercel |
| 后端 | Python, Flask |
| 漏洞数据 | OSV.dev API |
| 缓存 | SQLite |
| 数据库 | MongoDB Atlas |
| 告警 | Slack Incoming Webhooks |
| AI | Google Gemini API |
| Git 自动化 | GitHub REST API (PyGithub) |
| 容器化 | Docker |
| CI/CD | GitHub Actions |
| 报告 | Power BI |
## 🚀 快速开始
### 前置条件
Python 3.11+, Node.js 20+, Docker, MongoDB Atlas 账户
### 安装说明
**Scanner:**
```
git clone https://github.com/AjayZordan/NexLock.git
cd NexLock/scanner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 app.py
```
**Dashboard:**
```
cd ../web
npm install
npm run dev
```
## 📁 项目结构
```
nexlock/
├── web/ → Next.js dashboard (deployed on Vercel)
├── scanner/ → Python/Flask scanning microservice (Dockerized)
├── .github/workflows/ → GitHub Actions CI/CD pipeline
└── README.md
```
## 📄 许可证
本项目基于 [MIT License](LICENSE) 授权 — 可自由使用、修改和分发,但需注明出处。
## 👤 作者
**R. Ajay Kumar**
[GitHub](https://github.com/AjayZordan) · [LinkedIn](https://linkedin.com/in/ajaykumar-secdev)
标签:请求拦截, 逆向工具