Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
DVDR_LLM — Framework ensembliste pour la détection et la réparation de vulnérabilités logicielles utilisant plusieurs grands modèles de langage, avec analyse par consensus et outils d'évaluation pour les compromis précision-rappel. | Kitploit
Outils/GitHubGitHub/erroristotle/dvdr_llm
Analyse des VulnérabilitésAnalyse de CodeApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationSécurité de l'IA
GitHuberroristotle/dvdr_llm

DVDR_LLM

Framework ensembliste pour la détection et la réparation de vulnérabilités logicielles utilisant plusieurs grands modèles de langage, avec analyse par consensus et outils d'évaluation pour les compromis précision-rappel.

Voir le dépôt
3il y a 8 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

DVDR-LLM : Quand les LLM sont-ils plus efficaces ensemble pour la détection et la réparation des vulnérabilités logicielles ?

Python 3.8+ Paper

Implémentation officielle et artefact de l'article de recherche :
« DVDR-LLM: When Are LLMs Better Together for Software Vulnerability Detection and Repair? »

🎯 Vue d'ensemble

DVDR-LLM est un framework d'ensemble qui examine systématiquement les compromis fondamentaux liés à l'agrégation de plusieurs grands modèles de langage (LLM) pour la détection et la réparation des vulnérabilités logicielles. Notre évaluation exhaustive révèle des enseignements essentiels sur l'équilibre précision-rappel, les avantages de la diversité des modèles et les approches basées sur le consensus dans les applications critiques pour la sécurité.

Résultats clés

  • Compromis précision-rappel : l'ensemble réduit les faux positifs dans l'évaluation de la validité des correctifs (+10-12 % de précision) mais augmente les faux négatifs dans l'identification des vulnérabilités
  • Avantages liés à la complexité : les avantages de la diversité des modèles augmentent avec le niveau d'abstraction du code (+18 % de rappel, +11,8 % de F1 pour les vulnérabilités multi-fichiers)
  • Biais conservateur : 80 % des modèles présentent un comportement conservateur systématique (vulnérabilités manquées plutôt que sur-détection)
  • Aucun spécialiste unique : toutes les détections de vulnérabilités se chevauchent au sein de l'ensemble, validant les stratégies de vote majoritaire

📁 Structure du dépôt

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

🚀 Démarrage rapide

Prérequis

  • Python 3.8+
  • Accès aux API LLM (Ollama, OpenAI, etc.)
  • SQLite pour les bases de données de vulnérabilités

Installation

  1. Clonez le dépôt :

    root@kitploit:~
    git clone https://github.com/Erroristotle/DVDR_LLM.git
    cd DVDR_LLM
    
  2. Installez les dépendances :

    root@kitploit:~
    pip install -r requirements.txt
    pip install -e .  # Install package in development mode
    
  3. Vérifiez l'installation :

    root@kitploit:~
    python verify_package.py
    

Utilisation de base

Interface en ligne de commande

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

API Python

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"
)

📊 Reproduction des résultats de l'article

Questions de recherche

RQ1 : Impact de l'agrégation de plusieurs 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 : Seuil de consensus optimal

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 : Performance selon les niveaux d'abstraction

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 : Agrégation pondérée pour la qualité des correctifs

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

Génération des figures principales

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

🔧 Configuration

Configuration des modèles

Modifiez dvdr_llm/config.py pour configurer les points de terminaison LLM :

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
}

Modèles de prompts

Le framework utilise des modèles de prompts standardisés pour la reproductibilité :

  • SVD1 : Identification des vulnérabilités dans le code non corrigé
  • SVD2 : Évaluation de la validité des correctifs
  • SVD3 : Identification des vulnérabilités guidée par CVE/CWE
  • SVD4 : Validation des correctifs guidée par CVE/CWE
  • SVR1 : Réparation des vulnérabilités en zero-shot
  • SVR2 : Réparation en few-shot avec descriptions de commits

📈 Résultats expérimentaux

Résumé des performances des modèles

Δ% indique la différence de performance par rapport à la référence (baseline) de l'ensemble

Enseignements clés

  1. Relation de performance inverse : les modèles qui excellent en détection échouent souvent en vérification
  2. Sensibilité au seuil : un seuil de 60 % offre l'équilibre optimal entre les tâches
  3. Avantages de l'abstraction : les avantages de l'ensemble augmentent avec la complexité du code
  4. Biais conservateur : tendance systématique à la sous-détection plutôt qu'à la sur-détection

🛠️ Utilisation avancée

Analyse personnalisée

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"
)

Extension du framework

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"))

📚 Documentation

  • Référence API : Documentation API détaillée
  • Guide d'analyse : Explications de l'analyse statistique
  • Guide de visualisation : Instructions pour la génération de figures
  • Analyse de consensus : Détails de la méthodologie de consensus

🔬 Article de recherche

L'ensemble des résultats de la recherche est documenté dans paper/main.tex. Les contributions clés incluent :

  1. Première évaluation empirique complète de la diversité des ensembles de LLM pour les tâches de vulnérabilité
  2. Nouveau système d'évaluation pondérée des réparations prenant en compte la qualité du code au-delà de la syntaxe
  3. Analyse systématique sur trois niveaux d'abstraction fournissant des enseignements pratiques sur l'évolutivité
  4. Analyse critique des compromis précision-rappel pour les applications critiques pour la sécurité

🤝 Contribution

Nous accueillons les contributions ! Veuillez consulter nos directives de contribution :

  1. Forkez le dépôt
  2. Créez une branche de fonctionnalité (git checkout -b feature/new-analysis)
  3. Validez les modifications (git commit -am 'Add new analysis method')
  4. Poussez vers la branche (git push origin feature/new-analysis)
  5. Créez une Pull Request

📄 Licence

Voir le fichier LICENCE.

Si vous utilisez DVDR-LLM, veuillez citer : @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} }

Télécharger l’outil
ModèleSVD1 (Δ%)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%)RéférenceRéférenceRéférenceRéférence