🚀 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。