suryakiran2k03/machine-learning-code-vulnerability-detector
GitHub: suryakiran2k03/machine-learning-code-vulnerability-detector
一个结合TF-IDF与随机森林算法的机器学习系统,用于自动化检测C源代码中的安全漏洞并提供修复建议。
Stars: 1 | Forks: 0
# 🛡️ 基于机器学习的代码漏洞检测系统
这是一个基于机器学习的 Web 应用程序,它使用 **TF-IDF**、**基于规则的检测** 和 **Random Forest** 来检测 **C 源代码** 中的安全漏洞。该系统分析上传的 C 程序,预测漏洞,高亮显示不安全的代码,提供安全编码建议,并生成可下载的 PDF 报告。





## 🚀 在线演示
🔗 **试用应用程序:** [基于机器学习的代码漏洞检测系统](https://machine-learning-code-vulnerability-detector.streamlit.app)
# 📖 项目概述
软件漏洞是导致网络安全漏洞的主要原因之一。手动检测易受攻击的代码非常耗时且容易出现人为错误。
本项目通过将 **机器学习** 与 **基于规则的检测** 相结合,实现了对 **C 源代码** 漏洞的自动化检测。该应用程序可预测上传的代码是 **安全**、**潜在漏洞** 还是 **存在漏洞**,同时还提供置信度分数、严重程度、安全编码建议以及可下载的 PDF 报告。
# 🎯 问题陈述
开发人员经常在不知不觉中通过不安全的编码实践引入安全漏洞。人工代码审查需要大量的专业知识和时间。
本项目的目标是利用机器学习和基于规则的检测技术自动检测存在漏洞的 C 代码,使开发人员能够快速识别并修复安全问题。
# 🎯 目标
- 检测 C 源代码中的漏洞。
- 使用 Random Forest 提高检测准确性。
- 将机器学习与基于规则的检测相结合。
- 为预测生成置信度分数。
- 根据预测置信度显示严重程度。
- 高亮显示存在漏洞的代码部分。
- 建议安全的编码替代方案。
- 生成可下载的 PDF 报告。
# ✨ 主要特性
- 📂 上传 C 源代码文件
- 🤖 基于机器学习的漏洞检测
- 🧠 TF-IDF 特征提取
- 🔍 针对不安全 C 函数的基于规则的检测
- 🌲 Random Forest 分类
- 📊 置信度分数计算
- ⚠️ 严重程度分析
- 💡 安全编码建议
- 🎯 漏洞代码高亮显示
- 📄 生成可下载的 PDF 报告
- 🌐 交互式 Streamlit Web 界面
# ⚙️ 使用的技术
| 类别 | 技术 |
|-----------|------------|
| 编程语言 | Python |
| 机器学习 | Random Forest |
| 特征提取 | TF-IDF |
| Web 框架 | Streamlit |
| 机器学习库 | Scikit-learn |
| 数据处理 | Pandas, NumPy |
| 可视化 | Matplotlib |
| 报告生成 | ReportLab |
# 🏗️ 系统工作流程
```
C Source Code Upload
│
▼
Code Preprocessing
│
▼
TF-IDF Feature Extraction
│
▼
Rule-Based Detection
│
▼
Random Forest Classification
│
▼
Confidence Score Generation
│
▼
Severity Level Analysis
│
▼
Secure Coding Recommendations
│
▼
PDF Report Generation
```
## 🏗️ 系统架构
以下架构图说明了应用程序的工作流程。

# 📊 模型性能
| 指标 | 分数 |
|---------|-------|
| Accuracy | **86.7%** |
| Precision | **87%** |
| Recall | **86%** |
| F1 Score | **86%** |
选择 Random Forest 作为最终模型,是因为与其他评估模型相比,它在准确性、Precision、Recall 和鲁棒性之间实现了最佳的总体平衡。
# 📷 应用程序截图
## 🏠 主页
用户可以在此着陆页上传 C 源代码文件并对其进行分析以查找漏洞。

## 🟢 安全代码预测
被归类为 **安全** 的程序示例,以及其置信度分数和分析结果。

## 🟡 潜在漏洞检测
显示可能包含需要开发人员关注的潜在安全风险的代码示例。

## 🔴 漏洞代码检测
系统检测到的漏洞 C 代码示例,包括严重程度分析和安全编码建议。

## 📊 模型性能仪表板
显示经过训练的机器学习模型的评估指标,包括 Accuracy、Precision、Recall 和 F1-Score。

## 📄 生成的 PDF 报告
可下载的漏洞分析报告,包含预测结果、置信度分数、严重程度、提交的代码以及安全编码建议。

# 📂 项目结构
```
.
├── app.py
├── README.md
├── requirements.txt
├── dataset/
├── models/
├── screenshots/
└── src/
```
# 🚀 快速开始
## 克隆仓库
```
git clone https://github.com/suryakiran2k03/machine-learning-code-vulnerability-detector.git
```
## 导航至项目文件夹
```
cd machine-learning-code-vulnerability-detector
```
## 安装依赖项
```
pip install -r requirements.txt
```
## 运行应用程序
```
streamlit run app.py
```
Streamlit 应用程序将在您的默认 Web 浏览器中启动。
# 📌 工作原理
1. 上传 C 源代码文件。
2. 应用程序对源代码进行预处理。
3. TF-IDF 将源代码转换为数值特征向量。
4. 基于规则的检测识别不安全的 C 函数。
5. Random Forest 预测代码是安全、潜在漏洞还是存在漏洞。
6. 计算置信度分数。
7. 分配严重程度。
8. 高亮显示存在漏洞的代码行。
9. 显示安全编码建议。
10. 生成可下载的 PDF 报告。
# 🔮 未来增强功能
- 基于深度学习的漏洞检测。
- 支持多种编程语言。
- 云部署。
- IDE 集成。
- 自动漏洞修复建议。
- 实时代码分析。
- 支持 OWASP 和 CWE 漏洞映射。
# 📄 许可证
本项目基于 **MIT License** 授权。
# 👨💻 作者
**Surya Kiran**
计算机应用硕士 (MCA)
GitHub: [@suryakiran2k03](https://github.com/suryakiran2k03)
## ⭐ 支持
如果您觉得这个项目有用,请考虑在 GitHub 上给它一个 ⭐。
感谢您访问此仓库!
标签:Apex, Kubernetes, Python, Streamlit, 安全, 无后门, 机器学习, 访问控制, 超时处理, 逆向工具