Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DVDR_LLM — 여러 대규모 언어 모델을 사용하는 소프트웨어 취약점 탐지 및 수리용 앙상블 프레임워크로, 정밀도-재현율 트레이드오프를 위한 합의 분석 및 평가 도구를 포함합니다. | Kitploit
도구/GitHubGitHub/erroristotle/dvdr_llm
Vulnerability AnalysisCode AnalysisMachine LearningPapers & ResearchLearning & EducationAI Security
GitHuberroristotle/dvdr_llm

DVDR_LLM

여러 대규모 언어 모델을 사용하는 소프트웨어 취약점 탐지 및 수리용 앙상블 프레임워크로, 정밀도-재현율 트레이드오프를 위한 합의 분석 및 평가 도구를 포함합니다.

저장소 보기
38개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DVDR-LLM: LLM은 소프트웨어 취약점 탐지 및 수리에 언제 함께 사용하는 것이 더 나은가?

Python 3.8+ Paper

연구 논문의 공식 구현 및 아티팩트:
"DVDR-LLM: LLM은 소프트웨어 취약점 탐지 및 수리에 언제 함께 사용하는 것이 더 나은가?"

🎯 개요

DVDR-LLM은 소프트웨어 취약점 탐지 및 수리를 위해 여러 대규모 언어 모델(LLM)을 집계할 때의 근본적인 트레이드오프를 체계적으로 조사하는 앙상블 프레임워크입니다. 포괄적인 평가를 통해 정밀도-재현율 균형, 모델 다양성의 이점, 보안에 중요한 애플리케이션에서의 합의 기반 접근 방식에 대한 중요한 통찰력을 제공합니다.

주요 발견 사항

  • 정밀도-재현율 트레이드오프: 앙상블은 패치 유효성 평가에서 오탐(false positive)을 줄이지만(+10-12% 정확도), 취약점 식별에서는 미탐(false negative)을 증가시킵니다.
  • 복잡성 이점: 모델 다양성의 이점은 코드 추상화 수준이 높아질수록 증가합니다(다중 파일 취약점에서 +18% 재현율, +11.8% F1).
  • 보수적 편향: 모델의 80%가 체계적인 보수적 행동(과잉 탐지 대신 취약점 누락)을 보입니다.
  • 독점적 전문가 없음: 모든 취약점 탐지 결과가 앙상블 전체에 걸쳐 중복되며, 이는 다수결 투표 전략을 뒷받침합니다.

📁 저장소 구조

root@kitploit:~
DVDR_LLM/
├── dvdr_llm/                  # Main package (professional structure)
│   ├── __init__.py            # Package exports
│   ├── cli.py                 # Command-line interface
│   ├── config.py              # Configuration settings
│   ├── core/                  # Core functionality
│   │   ├── api_client.py      # LLM API communication
│   │   ├── detector.py        # VulnerabilityDetector class
│   │   └── prompts.py         # Prompt generation utilities
│   ├── analysis/              # Analysis modules
│   │   ├── consensus.py       # Consensus analysis
│   │   └── metrics.py         # Performance metrics
│   ├── evaluation/            # Model evaluation
│   │   └── evaluator.py       # ModelEvaluator class
│   ├── visualization/         # Plotting and visualization
│   │   └── plotter.py         # ResultsPlotter class
│   └── tools/                 # Additional utilities
├── utils/                     # Original utility modules
│   ├── api.py                 # LLM API interaction helpers
│   ├── database.py            # SQLite helper functions
│   └── config.py              # Configuration constants
├── data/                      # Datasets and databases
│   ├── vulnerabilities.csv    # Vulnerability data
│   └── vulnerable and patched codes.sqlite
├── output/                    # Generated results and databases
│   ├── database_*.sqlite      # Model-specific databases
│   ├── consensus_analysis/    # Consensus analysis results
│   ├── metrics/              # Performance metrics
│   └── database_exports/     # Exported data
├── examples/                  # Usage examples
│   └── basic_usage.py         # Basic usage demonstration
├── docs/                      # Documentation
│   └── README_consensus_analysis.md
├── paper/                     # Research paper
│   ├── main.pdf               # Published paper
│   └── main.tex               # LaTeX source
├── setup.py                   # Package installation
├── requirements.txt           # Dependencies
├── CHANGELOG.md              # Change log
├── LICENSE                   # MIT License
└── README.md                 # This file

🚀 빠른 시작

사전 요구 사항

  • Python 3.8+
  • LLM API(Ollama, OpenAI 등) 접근 권한
  • 취약점 데이터베이스용 SQLite

설치

  1. 저장소를 클론합니다:

    root@kitploit:~
    git clone https://github.com/Erroristotle/DVDR_LLM.git
    cd DVDR_LLM
    
  2. 의존성을 설치합니다:

    root@kitploit:~
    pip install -r requirements.txt
    pip install -e .  # Install package in development mode
    
  3. 설치를 확인합니다:

    root@kitploit:~
    python verify_package.py
    

기본 사용법

명령줄 인터페이스

root@kitploit:~
# Run vulnerability detection with ensemble
dvdr-llm detect --models llama3-8b,codellama-7b --database data/vulnerabilities.sqlite

# Analyze consensus patterns (RQ2)
dvdr-llm analyze consensus --input results/metrics/model_predictions.csv --threshold 0.6

# Generate conflict pattern visualization (Figure in paper)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights

# Evaluate ensemble performance across abstraction levels (RQ3)
dvdr-llm evaluate --models-dir output/ --abstraction-analysis

Python API

root@kitploit:~
from dvdr_llm import VulnerabilityDetector, ConsensusAnalyzer, ModelEvaluator

# Initialize vulnerability detector
detector = VulnerabilityDetector("llama3-8b-instruct")

# Connect to database
detector.connect_to_database("data/vulnerabilities.sqlite")

# Analyze code for vulnerabilities
code = """
void vulnerable_function(char *input) {
    char buffer[100];
    strcpy(buffer, input);  // Buffer overflow
}
"""

# Get CVE predictions
cve_names = detector.analyze_code_for_cves(code, 2023)
print(f"Identified CVEs: {cve_names}")

# Detect vulnerability
is_vulnerable = detector.detect_vulnerability(code)
print(f"Is vulnerable: {is_vulnerable}")

# Process database entries
stats = detector.process_database_entries(limit=100)
print(f"Processed {stats['processed']} entries")

# Clean up
detector.close()

# Multi-model consensus analysis
model_databases = {
    "llama3-8b": "output/database_llama3-8b-instruct.sqlite",
    "codellama-7b": "output/database_codellama-7b-instruct.sqlite",
    "gemma2-9b": "output/database_gemma2-9b.sqlite"
}

analyzer = ConsensusAnalyzer()
consensus_results = analyzer.run_full_analysis(model_databases)

# Model evaluation
evaluator = ModelEvaluator()
evaluation_results = evaluator.evaluate_multiple_models(
    model_databases, 
    "data/ground_truth.csv"
)

📊 논문 결과 재현

연구 질문

RQ1: 여러 LLM 집계의 영향

root@kitploit:~
# Generate Table 2 (Model comparison with delta percentages)
python dvdr_llm/tools/model_contribution_analysis.py results/metrics/model_predictions.csv --compare-ensemble --threshold 0.7

# Analyze individual vs ensemble performance
dvdr-llm evaluate --comparison-analysis --threshold 0.7

RQ2: 최적 합의 임계값

root@kitploit:~
# Generate Figure 3 (Threshold sensitivity analysis)
python dvdr_llm/tools/threshold_analysis.py results/metrics/model_predictions.csv --range 0.3-0.8

# Statistical validation of threshold selection
python dvdr_llm/analysis/statistical_validation.py --threshold-analysis

RQ3: 추상화 수준별 성능

root@kitploit:~
# Generate Table 3 (Abstraction level analysis)
python dvdr_llm/evaluation/evaluator.py --abstraction-analysis --threshold 0.6

# Level-specific performance evaluation
dvdr-llm evaluate --abstraction-levels 1,2,3 --ensemble

RQ4: 패치 품질을 위한 가중 집계

root@kitploit:~
# Analyze patch quality metrics (ROUGE, CodeBLEU, Complexity)
python dvdr_llm/tools/patch_quality_analysis.py results/patches/ --weighted-scoring

# Generate Figure 4 (Patch similarity and complexity analysis)
dvdr-llm visualize --patch-analysis --metrics results/patch_metrics.csv

주요 그림 생성

root@kitploit:~
# Main conflict pattern analysis figure (Figure 2)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights

# Threshold sensitivity analysis (Figure 3)
python dvdr_llm/visualization/enhanced_figure3_generator.py results/metrics/model_predictions.csv

# Statistical validation plots (Appendix)
python dvdr_llm/analysis/statistical_significance_analysis.py --generate-plots

🔧 구성

모델 구성

LLM 엔드포인트를 구성하려면 dvdr_llm/config.py를 편집하세요:

root@kitploit:~
LLM_MODELS = {
    "llama3_8b": "ollama run llama3:8b-instruct",
    "codellama_7b": "ollama run codellama:7b-instruct",
    "mistral_7b": "ollama run mistral:7b-instruct",
    # Add your model configurations
}

# Consensus thresholds for different scenarios
CONSENSUS_THRESHOLDS = {
    "conservative": 0.8,  # High precision, low false positives
    "balanced": 0.6,      # Balanced precision-recall
    "sensitive": 0.4      # High recall, catch more vulnerabilities
}

프롬프트 템플릿

프레임워크는 재현성을 위해 표준화된 프롬프트 템플릿을 사용합니다:

  • SVD1: 패치되지 않은 코드에서 취약점 식별
  • SVD2: 패치 유효성 평가
  • SVD3: CVE/CWE 기반 취약점 식별
  • SVD4: CVE/CWE 기반 패치 검증
  • SVR1: 제로샷 취약점 수리
  • SVR2: 커밋 설명을 활용한 퓨샷 수리

📈 실험 결과

모델 성능 요약

Δ%는 앙상블 기준선 대비 성능 차이를 나타냅니다

주요 통찰력

  1. 역성능 관계: 탐지에 뛰어난 모델은 검증에는 실패하는 경우가 많습니다
  2. 임계값 민감도: 60% 임계값이 작업 전반에 걸쳐 최적의 균형을 제공합니다
  3. 추상화 이점: 앙상블의 이점은 코드 복잡성이 증가함에 따라 커집니다
  4. 보수적 편향: 과잉 탐지보다 과소 탐지로 향하는 체계적인 경향

🛠️ 고급 사용법

사용자 정의 분석

root@kitploit:~
# Implement custom consensus strategy
from dvdr_llm.analysis.consensus import ConsensusAnalyzer

class WeightedConsensus(ConsensusAnalyzer):
    def __init__(self, model_weights):
        self.weights = model_weights
    
    def weighted_majority_vote(self, predictions):
        weighted_sum = sum(pred * weight for pred, weight in zip(predictions, self.weights))
        return weighted_sum >= 0.5

# Use custom visualization
from dvdr_llm.visualization import ConflictPatternPlotter

plotter = ConflictPatternPlotter()
plotter.create_professional_figure(
    disagreement_data, 
    output_prefix="custom_analysis",
    style="publication"
)

프레임워크 확장

root@kitploit:~
# Add new LLM model
from dvdr_llm.core.api_client import LLMClient

class CustomLLMClient(LLMClient):
    def __init__(self, api_endpoint, model_name):
        super().__init__(api_endpoint, model_name)
    
    def generate_response(self, prompt, **kwargs):
        # Implement custom API interaction
        pass

# Register new model
detector.register_model("custom-llm", CustomLLMClient("api_url", "model_name"))

📚 문서

  • API 참조: 상세 API 문서
  • 분석 가이드: 통계 분석 설명
  • 시각화 가이드: 그림 생성 지침
  • 합의 분석: 합의 방법론 세부 사항

🔬 연구 논문

전체 연구 결과는 paper/main.tex에 문서화되어 있습니다. 주요 기여는 다음과 같습니다:

  1. 취약점 작업을 위한 LLM 앙상블 다양성에 대한 최초의 포괄적인 실증 평가
  2. 구문을 넘어 코드 품질을 고려하는 새로운 가중 수리 평가 시스템
  3. 실용적인 확장성 통찰력을 제공하는 세 가지 추상화 수준에 걸친 체계적 분석
  4. 보안에 중요한 애플리케이션을 위한 중요한 정밀도-재현율 트레이드오프 분석

🤝 기여

기여를 환영합니다! 기여 지침을 참조하세요:

  1. 저장소를 포크합니다
  2. 기능 브랜치를 생성합니다 (git checkout -b feature/new-analysis)
  3. 변경 사항을 커밋합니다 (git commit -am 'Add new analysis method')
  4. 브랜치에 푸시합니다 (git push origin feature/new-analysis)
  5. 풀 리퀘스트를 생성합니다

📄 라이선스

LICENCE 파일을 참조하세요.

DVDR-LLM을 사용하신다면 다음을 인용해 주세요: @article{zibaeirad2025diverse, title={Diverse LLMs vs. Vulnerabilities: Who Detects and Fixes Them Better?}, author={Zibaeirad, Arastoo and Vieira, Marco}, journal={arXiv preprint arXiv:2512.12536}, year={2025} }

도구 다운로드
모델SVD1 (Δ%)SVD2 (Δ%)SVD3 (Δ%)SVD4 (Δ%)
Llama3-8b+59.8%-87.5%+127.1%-73.5%
Llama3-70b-50.8%+54.4%-19.6%+13.5%
CodeLlama-7b+16.8%-34.6%+86.9%-45.4%
Ensemble (60%)BaselineBaselineBaselineBaseline