🚀 UniXcoder代码漏洞检测模型
本模型基于Microsoft的UniXcoder进行微调,专门用于检测C/C++代码中的漏洞。它在DetectVul/devign数据集上进行训练,准确率达到68.34%,F1分数为62.14%。该模型可对输入的代码片段进行分类,判断其为安全(0)或存在漏洞(1)。
🚀 快速开始
使用以下代码加载模型并对示例代码片段进行推理:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
tokenizer = AutoTokenizer.from_pretrained("microsoft/unixcoder-base")
model = AutoModelForSequenceClassification.from_pretrained("mahdin70/unixcoder-code-vulnerability-detector")
code_snippet = """
void process(char *input) {
char buffer[50];
strcpy(buffer, input); // Potential buffer overflow
}
"""
inputs = tokenizer(code_snippet, return_tensors="pt", truncation=True, padding="max_length", max_length=512)
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
predicted_label = torch.argmax(predictions, dim=1).item()
print("Vulnerable Code" if predicted_label == 1 else "Safe Code")
✨ 主要特性
- 基于Microsoft的UniXcoder进行微调,专为C/C++代码漏洞检测优化。
- 在DetectVul/devign数据集上训练,具有一定的准确性和F1分数。
- 可对代码片段进行分类,判断其安全性。
📚 详细文档
模型详情
- 开发者:[mahdin70(Mukit Mahdin)]
- 微调基础模型:
microsoft/unixcoder-base
- 语言:英语(用于代码注释和元数据),C/C++
- 许可证:MIT
- 任务:代码漏洞检测
- 使用的数据集:
DetectVul/devign
- 架构:基于Transformer的序列分类
用途
直接使用
该模型可用于静态代码分析、安全审计以及软件仓库中的自动漏洞检测,对以下人员有用:
- 开发者:分析自己的代码是否存在潜在安全漏洞。
- 安全团队:扫描仓库以查找已知漏洞。
- 研究人员:研究人工智能系统中的漏洞检测。
下游使用
该模型可集成到IDE插件、CI/CD管道或安全扫描器中,以提供实时漏洞检测。
不适用场景
- 该模型不能替代人类安全专家。
- 对于C/C++以外的语言,模型的泛化能力可能不佳。
- 由于数据集的局限性,可能会出现误报或漏报。
偏差、风险和局限性
- 误报和漏报:模型可能将安全代码标记为有漏洞,或者遗漏实际存在的漏洞。
- 仅限于C/C++:模型在主要由C和C++代码组成的数据集上训练,对其他语言的表现可能不佳。
- 数据集偏差:训练数据可能无法涵盖所有可能的漏洞。
建议
用户不应仅依赖该模型进行安全评估,而应将其与手动代码审查和静态分析工具结合使用。
训练详情
训练数据
- 数据集:
DetectVul/devign
- 类别:
0 (安全)
, 1 (有漏洞)
- 规模:17483个代码片段
训练过程
- 优化器:AdamW
- 损失函数:交叉熵损失
- 批量大小:8
- 学习率:2e-5
- 训练轮数:3
- 使用的硬件:2x T4 GPU
指标
指标 |
得分 |
训练损失 |
0.4835 |
评估损失 |
0.6855 |
准确率 |
68.34% |
F1分数 |
62.14% |
精确率 |
69.18% |
召回率 |
56.40% |
环境影响
因素 |
值 |
使用的GPU |
2x T4 GPU |
训练时间 |
~1小时 |
📄 许可证
本模型使用的许可证为MIT。