
VulTriage의 코드: LLM 기반 취약점 탐지를 위한 삼중 경로 컨텍스트 증강

대규모 언어 모델과 정적 코드 분석을 기반으로 한 지능형 취약점 탐지 프레임워크로, 다중 데이터셋 평가와 절제 연구(ablation studies)를 지원합니다.

이 프로젝트는 GPT-4o 및 BGE-M3 모델을 기반으로 한 지능형 취약점 탐지 프레임워크로, 다음을 결합합니다:
pip install -r requirements.txt
모델은 자동으로 다운로드되며, 수동으로 다운로드할 수도 있습니다:
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
프로젝트 루트 디렉터리에 cwec_latest.xml/cwec_v4.19.1.xml 및 1435.csv/1435_filtered_columns.csv(CWE 인덱스 데이터) 파일이 있는지 확인하세요.
참고: 이 프로젝트는 CWE Top 25 최고 위험 소프트웨어 약점을 사용합니다. 관련 파일은 이미 프로젝트 루트 디렉터리에 포함되어 있습니다.
프로젝트 루트 디렉터리에 다음 파일을 배치하세요:
primevul_test_paired.jsonl (PrimeVul 데이터셋)LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv (Kotlin 데이터셋)main.py 또는 hyperparam_exp.py에서 OpenAI API 구성을 수정하세요:
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.poixe.com/v1"
)
참고: 현재 URL
https://api.poixe.com/v1은(는) 파싱에 실패했습니다. 지원되지 않는 웹 페이지 유형이거나 끊어진 링크일 수 있습니다. 링크의 유효성을 확인하거나 다른 API 제공업체로 전환하세요.
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
탐지 결과는 metrics_log.txt에 실시간으로 저장되며, 최종 평가 요약은 터미널에 출력됩니다:
| Script | Purpose |
|---|---|
main.py | 취약점 탐지 메인 스크립트, 절제 연구 지원 |
hyperparam_exp.py | 하이퍼파라미터 실험 및 다중 모드 평가 |
func 및 target 필드 포함)code 및 label 열 포함)| Library | Version | License |
|---|---|---|
| FlagEmbedding | 1.4.0 | MIT |
| openai | 2.26.0 | Apache 2.0 |
main.py 또는 hyperparam_exp.py에서 base_url과 api_key를 수정하세요.
1435.csv/1435_filtered_columns.csv가 올바르게 로드되었는지 확인하고 CWE 인덱스 데이터 형식이 올바른지 확인하세요.git clone https://huggingface.co/BAAI/bge-m3 명령을 통해 수동으로 다운로드할 수 있습니다.metrics_tracker.py의 update_pair_metrics 메서드를 수정하여 지표 계산 로직을 추가하거나 조정하세요.
HuggingFace 웹사이트에서 모델 파일을 직접 다운로드하여 프로젝트 루트 디렉터리에 압축을 풀거나, 네트워크 연결을 확인한 후 git clone https://huggingface.co/BAAI/bge-m3 명령을 다시 실행하세요.
retrieval.py |
| CWE 지식 베이스 검색 모듈 (BGE-M3 모델 기반 하이브리드 검색) |
metrics_tracker.py | 로그 저장 및 시각화를 지원하는 실시간 지표 추적기 |
| Parameter | Default | Description |
|---|
--wotask | all | 절제 모드: all(전체 기능), wo_ctrl_info_pth(정적 구조 정보 없음), wo_rag_pth(RAG 지식 없음), wo_exp_pth(코드 이해 없음), nan(보조 정보 없음) |
--jsonl_file | primevul_test_paired.jsonl | JSONL 데이터셋 경로 |
--metrics_file | metrics_log.txt | 지표 출력 파일 |
| Parameter | Default | Description |
|---|
--mode | pairwise | 평가 모드: pairwise 또는 single |
--input_file | 필수 | 입력 파일 경로 (JSONL 또는 CSV 형식) |
--detail_level | C | 코드 분석 상세 수준: C(전체), B(표준), A(간략) |
--info_comb | all | 정보 조합: all, no_ast, no_cfg, no_dfg |
--desc_level | concise | 설명 수준: concise, normal, detailed |
--max_vuln | 2 | 최대 취약점 수: 2 또는 4 |