Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DVDR_LLM — Ансамблевый фреймворк для обнаружения и исправления уязвимостей программного обеспечения с использованием нескольких больших языковых моделей, с анализом консенсуса и инструментами оценки для компромиссов между точностью и полнотой. | Kitploit
Инструменты/GitHubGitHub/erroristotle/dvdr_llm
Анализ уязвимостейАнализ КодаМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИ
GitHuberroristotle/dvdr_llm

DVDR_LLM

Ансамблевый фреймворк для обнаружения и исправления уязвимостей программного обеспечения с использованием нескольких больших языковых моделей, с анализом консенсуса и инструментами оценки для компромиссов между точностью и полнотой.

Репозиторий
38 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

DVDR-LLM: Когда LLM работают лучше вместе для обнаружения и исправления уязвимостей ПО?

Python 3.8+ Paper

Официальная реализация и артефакт для исследовательской статьи:
"DVDR-LLM: Когда LLM работают лучше вместе для обнаружения и исправления уязвимостей ПО?"

🎯 Обзор

DVDR-LLM — это ансамблевый фреймворк, который систематически исследует фундаментальные компромиссы при агрегации нескольких больших языковых моделей (LLM) для обнаружения и исправления уязвимостей ПО. Наша всесторонняя оценка выявляет критические выводы о балансировании точности и полноты, преимуществах разнообразия моделей и подходах, основанных на консенсусе, в критически важных для безопасности приложениях.

Ключевые выводы

  • Компромиссы точности и полноты: Ансамбль снижает количество ложных срабатываний при оценке корректности патчей (+10–12% точности), но увеличивает количество ложных отрицаний при идентификации уязвимостей
  • Преимущества сложности: Преимущества разнообразия моделей возрастают с уровнем абстракции кода (+18% полноты, +11,8% F1 для многофайловых уязвимостей)
  • Консервативное смещение: 80% моделей демонстрируют систематическое консервативное поведение (пропуск уязвимостей вместо их чрезмерного обнаружения)
  • Нет уникальных специалистов: Все обнаружения уязвимостей перекрываются в рамках ансамбля, что подтверждает стратегии голосования большинством

📁 Структура репозитория

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

🚀 Быстрый старт

Предварительные требования

  • Python 3.8+
  • Доступ к LLM API (Ollama, OpenAI и т.д.)
  • SQLite для баз данных уязвимостей

Установка

  1. Клонируйте репозиторий:

    root@kitploit:~
    git clone https://github.com/Erroristotle/DVDR_LLM.git
    cd DVDR_LLM
    
  2. Установите зависимости:

    root@kitploit:~
    pip install -r requirements.txt
    pip install -e .  # Install package in development mode
    
  3. Проверьте установку:

    root@kitploit:~
    python verify_package.py
    

Базовое использование

Интерфейс командной строки

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

Python API

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

📊 Воспроизведение результатов статьи

Исследовательские вопросы

RQ1: Влияние агрегации нескольких 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: Оптимальный порог консенсуса

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: Производительность на разных уровнях абстракции

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: Взвешенная агрегация для оценки качества патчей

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

Генерация основных рисунков

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

🔧 Конфигурация

Конфигурация моделей

Отредактируйте dvdr_llm/config.py для настройки конечных точек 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
}

Шаблоны промптов

Фреймворк использует стандартизированные шаблоны промптов для воспроизводимости:

  • SVD1: Идентификация уязвимостей в непатченном коде
  • SVD2: Оценка корректности патча
  • SVD3: Идентификация уязвимостей с использованием CVE/CWE
  • SVD4: Проверка патчей с использованием CVE/CWE
  • SVR1: Исправление уязвимостей без примеров (zero-shot)
  • SVR2: Исправление с несколькими примерами (few-shot) и описаниями коммитов

📈 Экспериментальные результаты

Сводка производительности моделей

Δ% показывает разницу в производительности относительно базового уровня ансамбля

Ключевые идеи

  1. Обратная зависимость производительности: Модели, преуспевающие в обнаружении, часто не справляются с проверкой
  2. Чувствительность к порогу: Порог 60% обеспечивает оптимальный баланс между задачами
  3. Преимущества абстракции: Преимущества ансамбля возрастают со сложностью кода
  4. Консервативное смещение: Систематическая склонность к недообнаружению, а не к чрезмерному обнаружению

🛠️ Расширенное использование

Пользовательский анализ

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

Расширение фреймворка

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

📚 Документация

  • Справочник по API: Подробная документация по API
  • Руководство по анализу: Пояснения по статистическому анализу
  • Руководство по визуализации: Инструкции по созданию рисунков
  • Анализ консенсуса: Детали методологии консенсуса

🔬 Научная статья

Полные результаты исследования задокументированы в paper/main.tex. Основные вклады включают:

  1. Первая всесторонняя эмпирическая оценка разнообразия ансамблей LLM для задач уязвимостей
  2. Новая система взвешенной оценки исправлений, учитывающая качество кода помимо синтаксиса
  3. Систематический анализ на трех уровнях абстракции, дающий практические выводы о масштабируемости
  4. Критический анализ компромисса точности и полноты для критически важных для безопасности приложений

🤝 Участие в разработке

Мы приветствуем ваш вклад! Пожалуйста, ознакомьтесь с правилами участия:

  1. Сделайте форк репозитория
  2. Создайте ветку для новой функции (git checkout -b feature/new-analysis)
  3. Зафиксируйте изменения (git commit -am 'Add new analysis method')
  4. Отправьте изменения в ветку (git push origin feature/new-analysis)
  5. Создайте Pull Request

📄 Лицензия

См. файл LICENCE.

Если вы используете DVDR-LLM, пожалуйста, цитируйте: @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} }

Скачать инструмент
МодельSVD1 (Δ%)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%
Ансамбль (60%)Базовый уровеньБазовый уровеньБазовый уровеньБазовый уровень