Un repository di ricerca dedicato all'esplorazione e alla valutazione di tecniche basate su Large Language Models (LLM) per l'identificazione automatica di vulnerabilità di sicurezza nel codice sorgente.
- Introduzione
- Obiettivi della Ricerca
- Metodologia
- Struttura del Repository
- Getting Started
- Come Usarlo
- Citazione
- Ringraziamenti
La sicurezza del software è una sfida critica e in continua evoluzione. Gli strumenti tradizionali di analisi statica del codice (SAST) sono fondamentali, ma spesso producono un numero elevato di falsi positivi o non riescono a identificare vulnerabilità complesse che dipendono dal contesto.
Questo progetto di ricerca, LLMxVulnerabilityDetection, si propone di investigare il potenziale dei Large Language Models (LLM) come nuova frontiera per la rilevazione di vulnerabilità. L'ipotesi è che la capacità degli LLM di "comprendere" il codice in modo più olistico possa superare i limiti degli approcci basati su pattern e regole predefinite.
Gli obiettivi principali di questo studio sono:
- Valutare l'Efficacia: Misurare le performance (precisione, richiamo, F1-score) di diversi LLM (sia general-purpose che code-specific) nell'identificare vulnerabilità note (es. CWE).
- Analisi Comparativa: Confrontare i risultati ottenuti dagli LLM con quelli di strumenti SAST open-source e commerciali di riferimento.
- Prompt Engineering: Sviluppare e ottimizzare tecniche di prompting (es. zero-shot, few-shot, chain-of-thought) per massimizzare l'accuratezza della rilevazione.
- Creazione di Benchmark: Assemblare e pubblicare un dataset di benchmark standardizzato per testare e confrontare approcci futuri in questo campo.
- Analisi dei Limiti: Identificare le classi di vulnerabilità in cui gli LLM eccellono e quelle in cui faticano, fornendo una guida per il loro utilizzo pratico.
L'approccio sperimentale si articola nelle seguenti fasi:
- Dataset: Utilizziamo dataset standard per la ricerca sulla sicurezza che contengono un'ampia gamma di esempi di codice vulnerabile e corretto.
- Modelli: La ricerca includerà test su una varietà di LLM, tra cui [es. GPT-4, Claude 3, Llama 3, Gemini, CodeLlama, ...].
- Valutazione: Gli esperimenti saranno condotti in modo programmatico tramite script che interrogano le API dei modelli. I risultati saranno analizzati per calcolare le metriche di performance standard e confrontare le capacità di ciascun modello.
Il repository è organizzato per garantire la massima chiarezza e riproducibilità della ricerca.
LLMxVulnerabilityDetection/
├── 📄 README.md # Questo file
├── 📂 data/ # Dataset grezzi e processati
│ ├── raw/
│ └── processed/
├── 📂 src/ # Codice sorgente principale
│ ├── scripts/ # Script per l'esecuzione degli esperimenti
├── 📂 results/ # Risultati degli esperimenti (CSV, JSON, grafici)
├── 📂 docs/ # Documentazione aggiuntiva (es. report, presentazioni)
├── 📜 requirements.txt # Dipendenze Python del progetto
└── 📜 .gitignore # File ignorati da Git
Segui questi passaggi per configurare l'ambiente di sviluppo e iniziare a eseguire gli esperimenti.
- Python 3.9+
pipevenv
-
Clona il repository:
git clone [https://github.com/your-username/LLMxVulnerabilityDetection.git](https://github.com/your-username/LLMxVulnerabilityDetection.git) cd LLMxVulnerabilityDetection -
Crea e attiva un ambiente virtuale:
python -m venv venv source venv/bin/activate # Su Windows: venv\Scripts\activate
-
Installa le dipendenze:
pip install -r requirements.txt
-
Configura le chiavi API: Molti esperimenti richiedono l'accesso alle API degli LLM. Crea un file
.envnella root del progetto e inserisci le tue chiavi. Il file è già incluso in.gitignoreper sicurezza.# Esempio per OpenAI OPENAI_API_KEY="sk-..." # Esempio per Google AI Studio GOOGLE_API_KEY="..."
TODO
Se utilizzi questo progetto o i suoi risultati nel tuo lavoro di ricerca, ti preghiamo di citarlo. TODO
Questo lavoro è supportato da [Università degli Studi di Parma, Dipartimento di Scienze Matematiche, Fisiche ed Informatiche, University of Parma's xAI laboratory].