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
35il 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

    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

    Δ% 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