
सॉफ्टवेयर भेद्यता का पता लगाने और मरम्मत के लिए एक एन्सेम्बल फ्रेमवर्क जो कई बड़े भाषा मॉडलों का उपयोग करता है, जिसमें सटीकता-पुनरावृत्ति व्यापार-बंद के लिए सर्वसम्मति विश्लेषण और मूल्यांकन उपकरण शामिल हैं।
शोध पत्र के लिए आधिकारिक कार्यान्वयन और कलाकृति:
"DVDR-LLM: जब LLM सॉफ़्टवेयर भेद्यता का पता लगाने और मरम्मत के लिए एक साथ बेहतर होते हैं?"
DVDR-LLM एक समूह ढांचा है जो सॉफ़्टवेयर भेद्यता का पता लगाने और मरम्मत के लिए कई बड़े भाषा मॉडल (LLM) को एकत्रित करने में मूलभूत व्यापार-बंदों की व्यवस्थित रूप से जांच करता है। हमारा व्यापक मूल्यांकन सटीकता-रीकॉल संतुलन, मॉडल विविधता लाभ और सुरक्षा-महत्वपूर्ण अनुप्रयोगों में सर्वसम्मति-आधारित दृष्टिकोणों के बारे में महत्वपूर्ण अंतर्दृष्टि प्रकट करता है।
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
रिपॉजिटरी को क्लोन करें:
git clone https://github.com/Erroristotle/DVDR_LLM.git
cd DVDR_LLM
निर्भरताएं स्थापित करें:
pip install -r requirements.txt
pip install -e . # पैकेज को डेवलपमेंट मोड में स्थापित करें
स्थापना सत्यापित करें:
python verify_package.py
# भेद्यता का पता लगाने के लिए समूह के साथ चलाएं
dvdr-llm detect --models llama3-8b,codellama-7b --database data/vulnerabilities.sqlite
# सर्वसम्मति पैटर्न का विश्लेषण करें (RQ2)
dvdr-llm analyze consensus --input results/metrics/model_predictions.csv --threshold 0.6
# विरोध पैटर्न विज़ुअलाइज़ेशन उत्पन्न करें (पेपर में चित्र)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
# अमूर्तता स्तरों पर समूह प्रदर्शन का मूल्यांकन करें (RQ3)
dvdr-llm evaluate --models-dir output/ --abstraction-analysis
from dvdr_llm import VulnerabilityDetector, ConsensusAnalyzer, ModelEvaluator
# भेद्यता डिटेक्टर को आरंभ करें
detector = VulnerabilityDetector("llama3-8b-instruct")
# डेटाबेस से कनेक्ट करें
detector.connect_to_database("data/vulnerabilities.sqlite")
# भेद्यताओं के लिए कोड का विश्लेषण करें
code = """
void vulnerable_function(char *input) {
char buffer[100];
strcpy(buffer, input); // Buffer overflow
}
"""
# CVE भविष्यवाणियां प्राप्त करें
cve_names = detector.analyze_code_for_cves(code, 2023)
print(f"Identified CVEs: {cve_names}")
# भेद्यता का पता लगाएं
is_vulnerable = detector.detect_vulnerability(code)
print(f"Is vulnerable: {is_vulnerable}")
# डेटाबेस प्रविष्टियां संसाधित करें
stats = detector.process_database_entries(limit=100)
print(f"Processed {stats['processed']} entries")
# साफ करें
detector.close()
# बहु-मॉडल सर्वसम्मति विश्लेषण
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)
# मॉडल मूल्यांकन
evaluator = ModelEvaluator()
evaluation_results = evaluator.evaluate_multiple_models(
model_databases,
"data/ground_truth.csv"
)
# तालिका 2 उत्पन्न करें (डेल्टा प्रतिशत के साथ मॉडल तुलना)
python dvdr_llm/tools/model_contribution_analysis.py results/metrics/model_predictions.csv --compare-ensemble --threshold 0.7
# व्यक्तिगत बनाम समूह प्रदर्शन का विश्लेषण करें
dvdr-llm evaluate --comparison-analysis --threshold 0.7
# चित्र 3 उत्पन्न करें (सीमा संवेदनशीलता विश्लेषण)
python dvdr_llm/tools/threshold_analysis.py results/metrics/model_predictions.csv --range 0.3-0.8
# सीमा चयन का सांख्यिकीय सत्यापन
python dvdr_llm/analysis/statistical_validation.py --threshold-analysis
# तालिका 3 उत्पन्न करें (अमूर्तता स्तर विश्लेषण)
python dvdr_llm/evaluation/evaluator.py --abstraction-analysis --threshold 0.6
# स्तर-विशिष्ट प्रदर्शन मूल्यांकन
dvdr-llm evaluate --abstraction-levels 1,2,3 --ensemble
# पैच गुणवत्ता मेट्रिक्स का विश्लेषण करें (ROUGE, CodeBLEU, जटिलता)
python dvdr_llm/tools/patch_quality_analysis.py results/patches/ --weighted-scoring
# चित्र 4 उत्पन्न करें (पैच समानता और जटिलता विश्लेषण)
dvdr-llm visualize --patch-analysis --metrics results/patch_metrics.csv
# मुख्य विरोध पैटर्न विश्लेषण आकृति (चित्र 2)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
# सीमा संवेदनशीलता विश्लेषण (चित्र 3)
python dvdr_llm/visualization/enhanced_figure3_generator.py results/metrics/model_predictions.csv
# सांख्यिकीय सत्यापन प्लॉट (परिशिष्ट)
python dvdr_llm/analysis/statistical_significance_analysis.py --generate-plots
LLM एंडपॉइंट्स को कॉन्फ़िगर करने के लिए dvdr_llm/config.py संपादित करें:
LLM_MODELS = {
"llama3_8b": "ollama run llama3:8b-instruct",
"codellama_7b": "ollama run codellama:7b-instruct",
"mistral_7b": "ollama run mistral:7b-instruct",
# अपने मॉडल कॉन्फ़िगरेशन जोड़ें
}
# विभिन्न परिदृश्यों के लिए सर्वसम्मति सीमाएं
CONSENSUS_THRESHOLDS = {
"conservative": 0.8, # उच्च सटीकता, कम गलत सकारात्मक
"balanced": 0.6, # संतुलित सटीकता-रीकॉल
"sensitive": 0.4 # उच्च रिकॉल, अधिक भेद्यताएं पकड़ें
}
पुनरुत्पादन क्षमता के लिए ढांचा मानकीकृत प्रॉम्प्ट टेम्पलेट का उपयोग करता है:
Δ% समूह आधार रेखा से प्रदर्शन अंतर दर्शाता है
# कस्टम सर्वसम्मति रणनीति लागू करें
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
# कस्टम विज़ुअलाइज़ेशन का उपयोग करें
from dvdr_llm.visualization import ConflictPatternPlotter
plotter = ConflictPatternPlotter()
plotter.create_professional_figure(
disagreement_data,
output_prefix="custom_analysis",
style="publication"
)
# नया LLM मॉडल जोड़ें
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):
# कस्टम API इंटरैक्शन लागू करें
pass
# नया मॉडल पंजीकृत करें
detector.register_model("custom-llm", CustomLLMClient("api_url", "model_name"))
पूर्ण शोध निष्कर्ष paper/main.tex में दस्तावेज़ित हैं। प्रमुख योगदानों में शामिल हैं:
हम योगदान का स्वागत करते हैं! कृपया हमारे योगदान दिशानिर्देश देखें:
git checkout -b feature/new-analysis)git commit -am 'नई विश्लेषण विधि जोड़ें')git push origin feature/new-analysis)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% |
| Ensemble (60%) | Baseline | Baseline | Baseline | Baseline |