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), 逆向工具