Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
DVDR_LLM — Marco de trabajo ensemble para la detección y reparación de vulnerabilidades de software mediante múltiples modelos de lenguaje grandes, con análisis de consenso y herramientas de evaluación para las compensaciones entre precisión y recall. | Kitploit
Herramientas/GitHubGitHub/erroristotle/dvdr_llm
Análisis de VulnerabilidadesAnálisis de CódigoAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IA
GitHuberroristotle/dvdr_llm

DVDR_LLM

Marco de trabajo ensemble para la detección y reparación de vulnerabilidades de software mediante múltiples modelos de lenguaje grandes, con análisis de consenso y herramientas de evaluación para las compensaciones entre precisión y recall.

Ver Repositorio
35hace 8 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

DVDR-LLM: ¿Cuándo son mejores los LLM juntos para la detección y reparación de vulnerabilidades de software?

Python 3.8+ Paper

Implementación oficial y artefacto del artículo de investigación:
"DVDR-LLM: ¿Cuándo son mejores los LLM juntos para la detección y reparación de vulnerabilidades de software?"

🎯 Descripción general

DVDR-LLM es un framework de ensemble que examina sistemáticamente las compensaciones fundamentales al agregar múltiples Modelos de Lenguaje de Gran Tamaño (LLM) para la detección y reparación de vulnerabilidades de software. Nuestra evaluación exhaustiva revela información clave sobre el equilibrio entre precisión y recall, los beneficios de la diversidad de modelos y los enfoques basados en consenso en aplicaciones de seguridad crítica.

Hallazgos clave

  • Compensaciones entre precisión y recall: El ensemble reduce los falsos positivos en la evaluación de la validez de los parches (+10-12% de exactitud), pero aumenta los falsos negativos en la identificación de vulnerabilidades
  • Beneficios de la complejidad: Las ventajas de la diversidad de modelos aumentan con el nivel de abstracción del código (+18% recall, +11.8% F1 para vulnerabilidades de múltiples archivos)
  • Sesgo conservador: El 80% de los modelos muestra un comportamiento sistemáticamente conservador (omitir vulnerabilidades frente a la sobredetección)
  • Sin especialistas únicos: Todas las detecciones de vulnerabilidades se solapan en el ensemble, lo que valida las estrategias de votación por mayoría
  • 📁 Estructura del repositorio

    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
    

    🚀 Inicio rápido

    Requisitos previos

    • Python 3.8+
    • Acceso a las API de LLM (Ollama, OpenAI, etc.)
    • SQLite para las bases de datos de vulnerabilidades

    Instalación

    1. Clonar el repositorio:

      root@kitploit:~
      git clone https://github.com/Erroristotle/DVDR_LLM.git
      cd DVDR_LLM
      
    2. Instalar las dependencias:

      root@kitploit:~
      pip install -r requirements.txt
      pip install -e .  # Install package in development mode
      
    3. Verificar la instalación:

      root@kitploit:~
      python verify_package.py
      

    Uso básico

    Interfaz de línea de comandos

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

    📊 Reproducción de los resultados del artículo

    Preguntas de investigación

    RQ1: Impacto de agregar múltiples 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: Umbral de consenso óptimo

    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: Rendimiento según los niveles de abstracción

    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: Agregación ponderada para la calidad de los parches

    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
    

    Generación de las figuras clave

    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
    

    🔧 Configuración

    Configuración de modelos

    Edite dvdr_llm/config.py para configurar los endpoints de 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
    }
    

    Plantillas de prompt

    El framework utiliza plantillas de prompt estandarizadas para la reproducibilidad:

    • SVD1: Identificación de vulnerabilidades en código sin parchear
    • SVD2: Evaluación de la validez de parches
    • SVD3: Identificación de vulnerabilidades guiada por CVE/CWE
    • SVD4: Validación de parches guiada por CVE/CWE
    • SVR1: Reparación de vulnerabilidades zero-shot
    • SVR2: Reparación few-shot con descripciones de commits

    📈 Resultados experimentales

    Resumen del rendimiento de los modelos

    ModeloSVD1 (Δ%)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%)Línea baseLínea baseLínea baseLínea base

    El Δ% muestra la diferencia de rendimiento respecto a la línea base del ensemble

    Conclusiones clave

    1. Relación inversa de rendimiento: Los modelos que sobresalen en la detección a menudo fallan en la verificación
    2. Sensibilidad al umbral: El umbral del 60% proporciona un equilibrio óptimo entre las tareas
    3. Beneficios de la abstracción: Las ventajas del ensemble aumentan con la complejidad del código
    4. Sesgo conservador: Tendencia sistemática hacia la subdetección frente a la sobredetección

    🛠️ Uso avanzado

    Análisis personalizado

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

    Ampliación del 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"))
    

    📚 Documentación

    • Referencia de la API: Documentación detallada de la API
    • Guía de análisis: Explicaciones del análisis estadístico
    • Guía de visualización: Instrucciones para la generación de figuras
    • Análisis de consenso: Detalles de la metodología de consenso

    🔬 Artículo de investigación

    Los hallazgos completos de la investigación están documentados en paper/main.tex. Las contribuciones clave incluyen:

    1. Primera evaluación empírica exhaustiva de la diversidad de ensembles de LLM para tareas de vulnerabilidad
    2. Novedoso sistema de evaluación de reparación ponderada que considera la calidad del código más allá de la sintaxis
    3. Análisis sistemático en tres niveles de abstracción que proporciona información práctica sobre la escalabilidad
    4. Análisis crítico de las compensaciones entre precisión y recall para aplicaciones de seguridad crítica

    🤝 Contribuciones

    ¡Las contribuciones son bienvenidas! Consulte nuestras guías de contribución:

    1. Haga un fork del repositorio
    2. Cree una rama de funcionalidad (git checkout -b feature/new-analysis)
    3. Haga commit de los cambios (git commit -am 'Add new analysis method')
    4. Haga push a la rama (git push origin feature/new-analysis)
    5. Cree una Pull Request

    📄 Licencia

    Consulte el archivo LICENCE.

    Si utiliza DVDR-LLM, por favor cite: @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} }

    Descargar herramienta