Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/erroristotle/dvdr_llm
Análise de VulnerabilidadesAnálise de CódigoAprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoSegurança de IA
GitHuberroristotle/dvdr_llm

DVDR_LLM

Framework de ensemble para detecção e correção de vulnerabilidades de software usando múltiplos modelos de linguagem de grande porte, com análise de consenso e ferramentas de avaliação para trade-offs entre precisão e recall.

Ver Repositório
35há 8 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

DVDR-LLM: Quando LLMs são Melhores em Conjunto para Detecção e Correção de Vulnerabilidades de Software?

Python 3.8+ Paper

Implementação oficial e artefato para o artigo de pesquisa:
"DVDR-LLM: Quando LLMs são Melhores em Conjunto para Detecção e Correção de Vulnerabilidades de Software?"

🎯 Visão Geral

O DVDR-LLM é um framework de ensemble que examina sistematicamente as compensações fundamentais na agregação de múltiplos Modelos de Linguagem de Grande Porte (LLMs) para detecção e correção de vulnerabilidades de software. Nossa avaliação abrangente revela insights críticos sobre o equilíbrio precisão-revocação, os benefícios da diversidade de modelos e as abordagens baseadas em consenso em aplicações críticas de segurança.

Principais Descobertas

  • Compensações Precisão-Revocação: O ensemble reduz falsos positivos na avaliação de validade de patch (+10-12% de precisão), mas aumenta falsos negativos na identificação de vulnerabilidades
  • Benefícios de Complexidade: As vantagens da diversidade de modelos aumentam com o nível de abstração do código (+18% de revocação, +11,8% de F1 para vulnerabilidades multiarquivo)
  • Viés Conservador: 80% dos modelos exibem comportamento conservador sistemático (deixando de detectar vulnerabilidades versus superdetecção)
  • Sem Especialistas Únicos: Todas as detecções de vulnerabilidades se sobrepõem no ensemble, validando estratégias de votação majoritária
  • 📁 Estrutura do Repositório

    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
    

    🚀 Início Rápido

    Pré-requisitos

    • Python 3.8+
    • Acesso a APIs de LLM (Ollama, OpenAI, etc.)
    • SQLite para bancos de dados de vulnerabilidades

    Instalação

    1. Clone o repositório:

      root@kitploit:~
      git clone https://github.com/Erroristotle/DVDR_LLM.git
      cd DVDR_LLM
      
    2. Instale as dependências:

      root@kitploit:~
      pip install -r requirements.txt
      pip install -e .  # Install package in development mode
      
    3. Verifique a instalação:

      root@kitploit:~
      python verify_package.py
      

    Uso Básico

    Interface de Linha de Comando

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

    📊 Reproduzindo Resultados do Artigo

    Perguntas de Pesquisa

    RQ1: Impacto da Agregação de Múltiplos LLMs

    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: Limiar de Consenso Ótimo

    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: Desempenho entre Níveis de Abstração

    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: Agregação Ponderada para Qualidade de Patch

    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
    

    Geração das Principais Figuras

    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
    

    🔧 Configuração

    Configuração de Modelos

    Edite dvdr_llm/config.py para configurar os endpoints dos LLMs:

    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
    }
    

    Templates de Prompt

    O framework utiliza templates de prompt padronizados para reprodutibilidade:

    • SVD1: Identificação de vulnerabilidades em código não corrigido
    • SVD2: Avaliação de validade de patch
    • SVD3: Identificação de vulnerabilidades guiada por CVE/CWE
    • SVD4: Validação de patch guiada por CVE/CWE
    • SVR1: Correção de vulnerabilidades zero-shot
    • SVR2: Correção few-shot com descrições de commit

    📈 Resultados Experimentais

    Resumo do Desempenho dos 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%)BaselineBaselineBaselineBaseline

    Δ% mostra a diferença de desempenho em relação à baseline do ensemble

    Principais Insights

    1. Relação de Desempenho Inversa: Modelos que se destacam na detecção frequentemente falham na verificação
    2. Sensibilidade ao Limiar: O limiar de 60% oferece o equilíbrio ideal entre as tarefas
    3. Benefícios da Abstração: As vantagens do ensemble aumentam com a complexidade do código
    4. Viés Conservador: Tendência sistemática à subdetecção versus superdetecção

    🛠️ Uso Avançado

    Análise Personalizada

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

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

    📚 Documentação

    • Referência da API: Documentação detalhada da API
    • Guia de Análise: Explicações de análise estatística
    • Guia de Visualização: Instruções para geração de figuras
    • Análise de Consenso: Detalhes da metodologia de consenso

    🔬 Artigo de Pesquisa

    Os resultados completos da pesquisa estão documentados em paper/main.tex. As principais contribuições incluem:

    1. Primeira avaliação empírica abrangente da diversidade de ensembles de LLMs para tarefas de vulnerabilidade
    2. Novo sistema de avaliação de reparo ponderado considerando a qualidade do código além da sintaxe
    3. Análise sistemática em três níveis de abstração fornecendo insights práticos de escalabilidade
    4. Análise crítica das compensações precisão-revocação para aplicações críticas de segurança

    🤝 Contribuindo

    Aceitamos contribuições! Consulte nossas diretrizes de contribuição:

    1. Faça um fork do repositório
    2. Crie um branch de funcionalidade (git checkout -b feature/new-analysis)
    3. Faça commit das alterações (git commit -am 'Add new analysis method')
    4. Envie para o branch (git push origin feature/new-analysis)
    5. Crie um Pull Request

    📄 Licença

    Consulte o arquivo LICENCE.

    Se você usar o DVDR-LLM, 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} }

    Baixar ferramenta