Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
DVDR_LLM — Ensemble-Framework zur Erkennung und Behebung von Softwareschwachstellen mithilfe mehrerer großer Sprachmodelle, mit Konsensanalyse und Bewertungswerkzeugen für Precision-Recall-Abwägungen. | Kitploit
Tools/GitHubGitHub/erroristotle/dvdr_llm
SchwachstellenanalyseCode-AnalyseMaschinelles LernenPapers & ForschungLernen & BildungKI-Sicherheit
GitHuberroristotle/dvdr_llm

DVDR_LLM

Ensemble-Framework zur Erkennung und Behebung von Softwareschwachstellen mithilfe mehrerer großer Sprachmodelle, mit Konsensanalyse und Bewertungswerkzeugen für Precision-Recall-Abwägungen.

Repository anzeigen
35vor 8 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

DVDR-LLM: Wann sind LLMs gemeinsam besser bei der Erkennung und Behebung von Software-Schwachstellen?

Python 3.8+ Paper

Offizielle Implementierung und Artefakt für das Forschungspapier:
„DVDR-LLM: Wann sind LLMs gemeinsam besser bei der Erkennung und Behebung von Software-Schwachstellen?"

🎯 Überblick

DVDR-LLM ist ein Ensemble-Framework, das systematisch die grundlegenden Trade-offs bei der Aggregation mehrerer großer Sprachmodelle (Large Language Models, LLMs) zur Erkennung und Behebung von Software-Schwachstellen untersucht. Unsere umfassende Evaluierung offenbart kritische Erkenntnisse über das Ausbalancieren von Präzision und Recall, Vorteile der Modellvielfalt sowie konsensbasierte Ansätze in sicherheitskritischen Anwendungen.

Zentrale Erkenntnisse

  • Präzisions-Recall-Trade-offs: Das Ensemble reduziert falsch-positive Ergebnisse bei der Bewertung von Patch-Gültigkeit (+10-12 % Genauigkeit), erhöht jedoch falsch-negative Ergebnisse bei der Schwachstellenidentifizierung.
  • Komplexitätsvorteile: Die Vorteile der Modellvielfalt nehmen mit dem Grad der Code-Abstraktion zu (+18 % Recall, +11,8 % F1 bei Multi-Datei-Schwachstellen).
  • Konservative Verzerrung: 80 % der Modelle zeigen ein systematisch konservatives Verhalten (Schwachstellen übersehen statt übermäßig zu erkennen).
  • Keine einzigartigen Spezialisten: Alle Schwachstellenerkennungen überlappen sich innerhalb des Ensembles, was Mehrheitsentscheidungsstrategien validiert.
  • 📁 Repository-Struktur

    root@kitploit:~
    DVDR_LLM/
    ├── dvdr_llm/                  # Hauptpaket (professionelle Struktur)
    │   ├── __init__.py            # Paket-Exporte
    │   ├── cli.py                 # Kommandozeilen-Schnittstelle
    │   ├── config.py              # Konfigurationseinstellungen
    │   ├── core/                  # Kernfunktionalität
    │   │   ├── api_client.py      # LLM-API-Kommunikation
    │   │   ├── detector.py        # VulnerabilityDetector-Klasse
    │   │   └── prompts.py         # Hilfsprogramme zur Prompt-Erzeugung
    │   ├── analysis/              # Analysemodule
    │   │   ├── consensus.py       # Konsensanalyse
    │   │   └── metrics.py         # Leistungskennzahlen
    │   ├── evaluation/            # Modellevaluierung
    │   │   └── evaluator.py       # ModelEvaluator-Klasse
    │   ├── visualization/         # Plotting und Visualisierung
    │   │   └── plotter.py         # ResultsPlotter-Klasse
    │   └── tools/                 # Zusätzliche Hilfsprogramme
    ├── utils/                     # Ursprüngliche Hilfsmodule
    │   ├── api.py                 # LLM-API-Interaktionshelfer
    │   ├── database.py            # SQLite-Hilfsfunktionen
    │   └── config.py              # Konfigurationskonstanten
    ├── data/                      # Datensätze und Datenbanken
    │   ├── vulnerabilities.csv    # Schwachstellendaten
    │   └── vulnerable and patched codes.sqlite
    ├── output/                    # Generierte Ergebnisse und Datenbanken
    │   ├── database_*.sqlite      # Modellspezifische Datenbanken
    │   ├── consensus_analysis/    # Ergebnisse der Konsensanalyse
    │   ├── metrics/              # Leistungskennzahlen
    │   └── database_exports/     # Exportierte Daten
    ├── examples/                  # Verwendungsbeispiele
    │   └── basic_usage.py         # Demonstration der grundlegenden Verwendung
    ├── docs/                      # Dokumentation
    │   └── README_consensus_analysis.md
    ├── paper/                     # Forschungspapier
    │   ├── main.pdf               # Veröffentlichtes Papier
    │   └── main.tex               # LaTeX-Quelltext
    ├── setup.py                   # Paketinstallation
    ├── requirements.txt           # Abhängigkeiten
    ├── CHANGELOG.md              # Änderungsprotokoll
    ├── LICENSE                   # MIT-Lizenz
    └── README.md                 # Diese Datei
    

    🚀 Schnellstart

    Voraussetzungen

    • Python 3.8+
    • Zugriff auf LLM-APIs (Ollama, OpenAI usw.)
    • SQLite für Schwachstellendatenbanken

    Installation

    1. Repository klonen:

      root@kitploit:~
      git clone https://github.com/Erroristotle/DVDR_LLM.git
      cd DVDR_LLM
      
    2. Abhängigkeiten installieren:

      root@kitploit:~
      pip install -r requirements.txt
      pip install -e .  # Paket im Entwicklungsmodus installieren
      
    3. Installation überprüfen:

      root@kitploit:~
      python verify_package.py
      

    Grundlegende Verwendung

    Kommandozeilen-Schnittstelle

    root@kitploit:~
    # Schwachstellenerkennung mit Ensemble ausführen
    dvdr-llm detect --models llama3-8b,codellama-7b --database data/vulnerabilities.sqlite
    
    # Konsensmuster analysieren (RQ2)
    dvdr-llm analyze consensus --input results/metrics/model_predictions.csv --threshold 0.6
    
    # Visualisierung von Konfliktmustern erzeugen (Abbildung im Papier)
    python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
    
    # Ensemble-Leistung über Abstraktionsebenen hinweg evaluieren (RQ3)
    dvdr-llm evaluate --models-dir output/ --abstraction-analysis
    

    Python-API

    root@kitploit:~
    from dvdr_llm import VulnerabilityDetector, ConsensusAnalyzer, ModelEvaluator
    
    # Schwachstellendetektor initialisieren
    detector = VulnerabilityDetector("llama3-8b-instruct")
    
    # Mit Datenbank verbinden
    detector.connect_to_database("data/vulnerabilities.sqlite")
    
    # Code auf Schwachstellen analysieren
    code = """
    void vulnerable_function(char *input) {
        char buffer[100];
        strcpy(buffer, input);  // Buffer overflow
    }
    """
    
    # CVE-Vorhersagen erhalten
    cve_names = detector.analyze_code_for_cves(code, 2023)
    print(f"Identified CVEs: {cve_names}")
    
    # Schwachstelle erkennen
    is_vulnerable = detector.detect_vulnerability(code)
    print(f"Is vulnerable: {is_vulnerable}")
    
    # Datenbankeinträge verarbeiten
    stats = detector.process_database_entries(limit=100)
    print(f"Processed {stats['processed']} entries")
    
    # Aufräumen
    detector.close()
    
    # Multi-Modell-Konsensanalyse
    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)
    
    # Modellevaluierung
    evaluator = ModelEvaluator()
    evaluation_results = evaluator.evaluate_multiple_models(
        model_databases, 
        "data/ground_truth.csv"
    )
    

    📊 Reproduktion der Paper-Ergebnisse

    Forschungsfragen

    RQ1: Auswirkung der Aggregation mehrerer LLMs

    root@kitploit:~
    # Tabelle 2 erzeugen (Modellvergleich mit Delta-Prozenten)
    python dvdr_llm/tools/model_contribution_analysis.py results/metrics/model_predictions.csv --compare-ensemble --threshold 0.7
    
    # Einzelne vs. Ensemble-Leistung analysieren
    dvdr-llm evaluate --comparison-analysis --threshold 0.7
    

    RQ2: Optimaler Konsensschwellenwert

    root@kitploit:~
    # Abbildung 3 erzeugen (Schwellenwert-Sensitivitätsanalyse)
    python dvdr_llm/tools/threshold_analysis.py results/metrics/model_predictions.csv --range 0.3-0.8
    
    # Statistische Validierung der Schwellenwertauswahl
    python dvdr_llm/analysis/statistical_validation.py --threshold-analysis
    

    RQ3: Leistung über Abstraktionsebenen hinweg

    root@kitploit:~
    # Tabelle 3 erzeugen (Analyse der Abstraktionsebenen)
    python dvdr_llm/evaluation/evaluator.py --abstraction-analysis --threshold 0.6
    
    # Ebenenspezifische Leistungsbewertung
    dvdr-llm evaluate --abstraction-levels 1,2,3 --ensemble
    

    RQ4: Gewichtete Aggregation für Patch-Qualität

    root@kitploit:~
    # Patch-Qualitätsmetriken analysieren (ROUGE, CodeBLEU, Komplexität)
    python dvdr_llm/tools/patch_quality_analysis.py results/patches/ --weighted-scoring
    
    # Abbildung 4 erzeugen (Patch-Ähnlichkeits- und Komplexitätsanalyse)
    dvdr-llm visualize --patch-analysis --metrics results/patch_metrics.csv
    

    Erzeugung der wichtigsten Abbildungen

    root@kitploit:~
    # Hauptabbildung zur Konfliktmusteranalyse (Abbildung 2)
    python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
    
    # Schwellenwert-Sensitivitätsanalyse (Abbildung 3)
    python dvdr_llm/visualization/enhanced_figure3_generator.py results/metrics/model_predictions.csv
    
    # Statistische Validierungsdiagramme (Anhang)
    python dvdr_llm/analysis/statistical_significance_analysis.py --generate-plots
    

    🔧 Konfiguration

    Modellkonfiguration

    Bearbeiten Sie dvdr_llm/config.py, um LLM-Endpunkte zu konfigurieren:

    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",
        # Fügen Sie Ihre Modellkonfigurationen hinzu
    }
    
    # Konsensschwellenwerte für verschiedene Szenarien
    CONSENSUS_THRESHOLDS = {
        "conservative": 0.8,  # Hohe Präzision, wenige falsch-positive Ergebnisse
        "balanced": 0.6,      # Ausgewogene Präzision und Recall
        "sensitive": 0.4      # Hoher Recall, mehr Schwachstellen erfassen
    }
    

    Prompt-Vorlagen

    Das Framework verwendet standardisierte Prompt-Vorlagen für die Reproduzierbarkeit:

    • SVD1: Schwachstellenidentifizierung in nicht gepatchtem Code
    • SVD2: Bewertung der Patch-Gültigkeit
    • SVD3: CVE/CWE-geleitete Schwachstellenidentifizierung
    • SVD4: CVE/CWE-geleitete Patch-Validierung
    • SVR1: Zero-Shot-Schwachstellenbehebung
    • SVR2: Few-Shot-Behebung mit Commit-Beschreibungen

    📈 Experimentelle Ergebnisse

    Zusammenfassung der Modellleistung

    ModellSVD1 (Δ%)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 %)BasislinieBasislinieBasislinieBasislinie

    Δ% zeigt die Leistungsdifferenz zur Ensemble-Basislinie

    Zentrale Erkenntnisse

    1. Umgekehrte Leistungsbeziehung: Modelle, die bei der Erkennung herausragen, versagen oft bei der Verifizierung.
    2. Schwellenwert-Sensitivität: Ein Schwellenwert von 60 % bietet das optimale Gleichgewicht über alle Aufgaben hinweg.
    3. Abstraktionsvorteile: Die Ensemble-Vorteile nehmen mit der Code-Komplexität zu.
    4. Konservative Verzerrung: Systematische Tendenz zur Untererkennung statt Übererkennung.

    🛠️ Erweiterte Verwendung

    Benutzerdefinierte Analyse

    root@kitploit:~
    # Benutzerdefinierte Konsensstrategie implementieren
    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
    
    # Benutzerdefinierte Visualisierung verwenden
    from dvdr_llm.visualization import ConflictPatternPlotter
    
    plotter = ConflictPatternPlotter()
    plotter.create_professional_figure(
        disagreement_data, 
        output_prefix="custom_analysis",
        style="publication"
    )
    

    Erweiterung des Frameworks

    root@kitploit:~
    # Neues LLM-Modell hinzufügen
    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):
            # Benutzerdefinierte API-Interaktion implementieren
            pass
    
    # Neues Modell registrieren
    detector.register_model("custom-llm", CustomLLMClient("api_url", "model_name"))
    

    📚 Dokumentation

    • API-Referenz: Detaillierte API-Dokumentation
    • Analyseleitfaden: Erläuterungen zur statistischen Analyse
    • Visualisierungsleitfaden: Anweisungen zur Abbildungserstellung
    • Konsensanalyse: Details zur Konsensmethodik

    🔬 Forschungspapier

    Die vollständigen Forschungsergebnisse sind in paper/main.tex dokumentiert. Zu den wichtigsten Beiträgen gehören:

    1. Erste umfassende empirische Evaluierung der LLM-Ensemble-Vielfalt für Schwachstellenaufgaben.
    2. Neuartiges gewichtetes Bewertungssystem für Reparaturen, das Code-Qualität über die Syntax hinaus berücksichtigt.
    3. Systematische Analyse über drei Abstraktionsebenen, die praktische Skalierbarkeitserkenntnisse liefert.
    4. Kritische Präzisions-Recall-Trade-off-Analyse für sicherheitskritische Anwendungen.

    🤝 Mitwirken

    Wir freuen uns über Beiträge! Bitte beachten Sie unsere Richtlinien für Mitwirkende:

    1. Repository forken
    2. Feature-Branch erstellen (git checkout -b feature/new-analysis)
    3. Änderungen committen (git commit -am 'Add new analysis method')
    4. Branch pushen (git push origin feature/new-analysis)
    5. Pull Request erstellen

    📄 Lizenz

    Siehe LICENCE-Datei.

    Wenn Sie DVDR-LLM verwenden, zitieren Sie bitte: @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} }

    Tool herunterladen