AjayZordan/NexLock

GitHub: AjayZordan/NexLock

由 AI 驱动并深度集成 CI/CD 的依赖项漏洞扫描工具,通过实时检测、Slack 告警与自动创建 GitHub PR 打通漏洞发现与修复的全流程闭环。

Stars: 0 | Forks: 0

# 🔐 Nexlock **检测。告警。修复。** 一款由 AI 驱动、集成 CI/CD 的依赖项漏洞扫描工具,可自动检测代码库中已知的安全漏洞,实时向团队发出警报,并自动创建 GitHub Pull Request —— 从而消除漏洞发现与修复之间的鸿沟。 ![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-000000?style=for-the-badge&logo=flask&logoColor=white) ![Next.js](https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white) ![MongoDB](https://img.shields.io/badge/MongoDB-47A248?style=for-the-badge&logo=mongodb&logoColor=white) ![SQLite](https://img.shields.io/badge/SQLite-07405E?style=for-the-badge&logo=sqlite&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white) ![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-2088FF?style=for-the-badge&logo=githubactions&logoColor=white) ![Gemini AI](https://img.shields.io/badge/Gemini%20AI-8E75B2?style=for-the-badge&logo=googlegemini&logoColor=white) ![Power BI](https://img.shields.io/badge/Power%20BI-F2C811?style=for-the-badge&logo=powerbi&logoColor=black) 🔗 **在线 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)
标签:请求拦截, 逆向工具