
Der Code von VulTriage: Triple-Path-Kontextanreicherung für LLM-basierte Schwachstellenerkennung

Ein intelligentes Schwachstellenerkennungs-Framework auf Basis von Large Language Models und statischer Codeanalyse, das Multi-Datensatz-Evaluierung und Ablationsstudien unterstützt.

Dieses Projekt ist ein intelligentes Schwachstellenerkennungs-Framework auf Basis der Modelle GPT-4o und BGE-M3 und kombiniert:
pip install -r requirements.txt
Das Modell wird automatisch heruntergeladen, oder Sie können es manuell herunterladen:
git clone https://huggingface.co/BAAI/bge-m3
# Note: BGE-M3 related dependencies can be installed via FlagEmbedding. For details, refer to: pip install -U FlagEmbedding
Stellen Sie sicher, dass die Dateien cwec_latest.xml/cwec_v4.19.1.xml und 1435.csv/1435_filtered_columns.csv (CWE-Indexdaten) im Projektstammverzeichnis vorhanden sind.
Hinweis: Dieses Projekt verwendet die CWE Top 25 Most Dangerous Software Weaknesses. Die zugehörigen Dateien sind bereits im Projektstammverzeichnis enthalten.
Platzieren Sie die folgenden Dateien im Projektstammverzeichnis:
primevul_test_paired.jsonl (PrimeVul-Datensatz)LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv (Kotlin-Datensatz)Ändern Sie die OpenAI-API-Konfiguration in main.py oder hyperparam_exp.py:
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.poixe.com/v1"
)
Hinweis: Die aktuelle URL
https://api.poixe.com/v1konnte nicht geparst werden. Möglicherweise handelt es sich um einen nicht unterstützten Webseitentyp oder einen defekten Link. Bitte überprüfen Sie die Gültigkeit des Links oder wechseln Sie zu einem anderen API-Anbieter.
python main.py --wotask all --jsonl_file primevul_test_paired.jsonl
# Without control flow information
python main.py --wotask wo_ctrl_info_pth --jsonl_file primevul_test_paired.jsonl
# Without RAG knowledge
python main.py --wotask wo_rag_pth --jsonl_file primevul_test_paired.jsonl
# Without code understanding
python main.py --wotask wo_exp_pth --jsonl_file primevul_test_paired.jsonl
# Without any auxiliary information
python main.py --wotask nan --jsonl_file primevul_test_paired.jsonl
# Pairwise evaluation mode
python hyperparam_exp.py --mode pairwise --input_file primevul_test_paired.jsonl --detail_level C --info_comb all --desc_level concise --max_vuln 2
# Single-sample evaluation mode
python hyperparam_exp.py --mode single --input_file LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv
Die Erkennungsergebnisse werden in Echtzeit in metrics_log.txt gespeichert, und abschließende Evaluierungszusammenfassungen werden im Terminal ausgegeben:
| Skript | Zweck |
|---|---|
main.py | Hauptskript zur Schwachstellenerkennung mit Unterstützung für Ablationsstudien |
func und target)code und label)| Bibliothek | Version | Lizenz |
|---|---|---|
| FlagEmbedding | 1.4.0 | MIT |
| openai | 2.26.0 | Apache 2.0 |
Ändern Sie base_url und api_key in main.py oder hyperparam_exp.py.
1435.csv/1435_filtered_columns.csv korrekt geladen wird, und stellen Sie sicher, dass das Format der CWE-Indexdaten korrekt ist;git clone https://huggingface.co/BAAI/bge-m3 herunterladen;Ändern Sie die Methode update_pair_metrics in metrics_tracker.py, um die Logik zur Metrikberechnung hinzuzufügen oder anzupassen.
Laden Sie die Modelldateien direkt von der HuggingFace-Website herunter und entpacken Sie sie in das Projektstammverzeichnis, oder überprüfen Sie Ihre Netzwerkverbindung und führen Sie den Befehl git clone https://huggingface.co/BAAI/bge-m3 erneut aus.
hyperparam_exp.py | Hyperparameterexperimente und Multi-Modus-Evaluierung |
retrieval.py | Abrufmodul für die CWE-Wissensbasis (hybrider Abruf auf Basis des BGE-M3-Modells) |
metrics_tracker.py | Echtzeit-Metrik-Tracker mit Protokollspeicherung und Visualisierungsunterstützung |
| Parameter | Standard | Beschreibung |
|---|
--wotask | all | Ablationsmodus: all (volle Funktionalität), wo_ctrl_info_pth (keine statischen Strukturinformationen), wo_rag_pth (kein RAG-Wissen), wo_exp_pth (kein Codeverständnis), nan (keine Zusatzinformationen) |
--jsonl_file | primevul_test_paired.jsonl | JSONL-Datensatzpfad |
--metrics_file | metrics_log.txt | Ausgabedatei für Metriken |
| Parameter | Standard | Beschreibung |
|---|
--mode | pairwise | Evaluierungsmodus: pairwise oder single |
--input_file | Erforderlich | Pfad der Eingabedatei (JSONL- oder CSV-Format) |
--detail_level | C | Detailgrad der Codeanalyse: C (vollständig), B (standard), A (kurz) |
--info_comb | all | Informationskombination: all, no_ast, no_cfg, no_dfg |
--desc_level | concise | Beschreibungsgrad: concise (prägnant), normal (normal), detailed (detailliert) |
--max_vuln | 2 | Maximale Anzahl von Schwachstellen: 2 oder 4 |