sallauddinayub/Vulnerability-Prediction-in-Software-Dependencies-Using-Machine-Learning

GitHub: sallauddinayub/Vulnerability-Prediction-in-Software-Dependencies-Using-Machine-Learning

基于集成机器学习的软件依赖漏洞预测平台,通过SCA扫描、SBOM生成与风险评级实现CVE公开前的主动安全预警。

Stars: 0 | Forks: 0

# AI 驱动的 SCA 依赖风险预测平台 — v3.0 **作者:** Sallauddin Ayub | M.Tech 毕业设计项目 **版本:** 3.0.0 | **框架:** Flask + Ensemble ML + CycloneDX SBOM ## v3.0 新特性 | 功能 | 描述 | |---|---| | **Ensemble ML 模型** | RF + Gradient Boosting + Logistic Regression + SVM (软投票) | | **ML 指标仪表盘** | Precision、Recall、F1-Score、ROC-AUC、Confusion Matrix | | **依赖关系图** | 交互式 D3.js 力导向图 — 节点按风险着色 | | **扫描对比** | 比较两次扫描 — delta、新增/移除/更改的包 | | **CI/CD 导出** | GitHub Actions 工作流 YAML,包含 PR 评论 + SBOM artifact | | **改进的 PDF** | 包含 Confusion Matrix + 特征重要性的多页企业级报告 | ## 安装说明 ``` # 提取 project cd sca_platform # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装 dependencies pip install -r requirements.txt # (可选)设置 GitHub API token export GITHUB_TOKEN=ghp_your_token_here # 运行 python app.py # 打开浏览器 # http://localhost:5000 ``` ## ML Ensemble 架构 ``` Input Features (7) ↓ ┌─────────────────────────────────────────────┐ │ SOFT-VOTING ENSEMBLE │ │ │ │ RandomForest (w=3) GradientBoosting (w=3) │ │ n_estimators=150 n_estimators=120 │ │ max_depth=10 learning_rate=0.08 │ │ │ │ LogisticReg (w=1) SVM-RBF (w=2) │ │ C=1.0, L2 C=2.0, gamma=scale │ └─────────────────────────────────────────────┘ ↓ Probability Averaging → Final Risk Label (Low / Medium / High) ``` **计算的指标:** - 每个类别的 Precision、Recall、F1-Score - 总体准确率 - ROC-AUC (宏平均 一对其余) - 5 折分层交叉验证 F1-Macro (5-fold Stratified Cross-Validation) - Confusion Matrix - 特征重要性 (来自 RF 组件) ## 新增 API 端点 | 路由 | 方法 | 描述 | |---|---|---| | `/graph-data` | GET | D3 依赖关系图 JSON | | `/compare` | GET | 比较最近 2 次扫描 | | `/cicd-export` | GET | 下载 GitHub Actions YAML | | `/ml-metrics` | GET | 完整的 ML 指标 JSON | | `/scan-list` | GET | 列出已存储的扫描 | ## CI/CD 集成 将生成的 `.github/workflows/sca-security.yml` 复制到你的代码库中。 **流水线步骤:** 1. **触发 (Trigger)** — push、pull_request、每周计划任务 2. **SCA 扫描** — Ensemble ML 风险评分 3. **PR 评论** — 在每个 PR 上进行内联风险摘要 4. **许可证检查** — GPL/AGPL 检测 5. **SBOM 导出** — CycloneDX JSON artifact (保留 90 天) ## 项目结构 ``` sca_platform/ ├── app.py # Flask application (v3.0) ├── requirements.txt ├── templates/ │ └── index.html # Enterprise dashboard UI (v3.0) ├── src/ │ ├── ml/ │ │ └── predictor.py # Ensemble ML (RF+GBT+LR+SVM) │ ├── sbom/ │ │ └── sbom_generator.py # CycloneDX 1.5 │ ├── vulnerability/ │ │ ├── cve_fetcher.py # NVD API │ │ ├── epss_fetcher.py # FIRST.org EPSS │ │ ├── license_checker.py # License compliance │ │ └── version_suggester.py # Safe version lookup │ ├── metadata/ │ │ └── github_fetcher.py # GitHub API │ ├── reports/ │ │ └── pdf_generator.py # Enterprise PDF (v3.0) │ ├── database/ │ │ └── db_manager.py # SQLite │ └── remediation/ │ └── recommender.py # Recommendations engine ├── uploads/ # Uploaded files ├── outputs/ # SBOM JSON ├── reports/ # PDF reports └── database/ # SQLite DB ``` *毕业设计项目 — 使用机器学习进行软件依赖中的漏洞预测*
标签:Apex, DevSecOps, Flask, 上游代理, 机器学习, 漏洞预测, 软件成分分析(SCA), 逆向工具