Large Language Models (LLMs) are increasingly utilized in software development for tasks ranging from code generation to security analysis. This thesis investigates their dual application: enhancing security-critical code generation by improving the robustness of security attack detectors, and advancing code security analysis by focusing on the detection of security-relevant commits. Firstly, since LLMs can struggle to effectively generate code that implements security functions with requirements, such as security attack detectors, we address the challenge of improving the robustness of LLM-generated security attack detectors for different type of injection. We propose a novel approach that integrates Retrieval Augmented Generation (RAG) and Self-Ranking into the LLM pipeline. RAG enhances the robustness of the output by incorporating external knowledge sources, while the Self-Ranking technique, inspired by the concept of Self-Consistency, generates multiple reasoning paths and ranks them to select the most secure function. Our extensive empirical study demonstrates significant improvements in preventing common web security attacks, specifically Cross-Site Scripting and SQL injection attacks. Secondly, we introduce novel approaches to code analysis, specifically for classifying security-relevant commits—those that potentially fix vulnerabilities—using LLMs that examine only the changes in lines of code within Java files. This initiative centers on a simple task: providing LLMs with code changes from commits to determine whether those changes correspond to a security-relevant commit or not. In this thesis we also evaluate the robustness, the consistency and the generalization capabilities of LLMs for code analysis by testing them on obfuscated code, by performing prompt perturbation and by introducing a new method to obtain a negative complement to a dataset of security-relevant commits. Together, these contributions highlight the potential of using LLMs to deliver more accurate code security analysis and to generate code that more effectively implements security requirements.

I modelli di linguaggio di grandi dimensioni (Large Language Models, LLM) sono sempre più utilizzati nello sviluppo software per attività che spaziano dalla generazione all’analisi della sicurezza del codice. Questa tesi indaga il loro duplice utilizzo: migliorare la generazione di codice critico per la sicurezza aumentando la robustezza dei rilevatori di attacchi, e avanzare nell’analisi della sicurezza del codice focalizzandosi sulla rilevazione di commit rilevanti per la sicurezza. In primo luogo, poiché gli LLM possono faticare a generare efficacemente codice che implementi funzioni di sicurezza con requisiti specifici, come i rilevatori di attacchi di sicurezza, affrontiamo la sfida di migliorare la robustezza dei rilevatori di attacchi generati dagli LLM per diversi tipi di iniezione di code. Proponiamo un approccio innovativo che integra la Generazione Aumentata da Recupero (Retrieval Augmented Generation, RAG) e l’Auto-Classificazione (Self-Ranking) nel processo degli LLM. La RAG aumenta la robustezza del risultato incorporando fonti di conoscenza esterne, mentre la tecnica di Auto-Classificazione, ispirata al concetto di Auto-Consistenza (Self-Consistency), genera percorsi di ragionamento multipli e li classifica per selezionare la funzione più sicura. Il nostro ampio studio empirico dimostra miglioramenti significativi nella prevenzione degli attacchi comuni alla sicurezza web, in particolare attacchi di Cross-Site Scripting e SQL injection. In secondo luogo, introduciamo nuovi approcci all’analisi del codice, specificamente per la classificazione dei commit rilevanti per la sicurezza—quelli che potenzialmente risolvono vulnerabilità—utilizzando LLM che esaminano solo le modifiche nelle linee di codice all’interno dei file Java. Questa iniziativa si concentra su un compito semplice: fornire agli LLM le modifiche di codice dei commit per determinare se tali modifiche corrispondano a un commit rilevante per la sicurezza o meno. In questa tesi, valutiamo anche la robustezza, la coerenza e le capacità di generalizzazione degli LLM nell’analisi del codice testandoli su codice offuscato, eseguendo perturbazioni dei prompt e introducendo un nuovo metodo per ottenere un complemento negativo a un dataset di commit rilevanti per la sicurezza. Questi contributi evidenziano il potenziale degli LLM per fornire un’analisi della sicurezza del codice più accurata e generare codice che implementi in modo più efficace i requisiti di sicurezza.

Leveraging LLMs to improve security-critical code generation and commit analysis

AIELLO, TOMMASO
2024/2025

Abstract

Large Language Models (LLMs) are increasingly utilized in software development for tasks ranging from code generation to security analysis. This thesis investigates their dual application: enhancing security-critical code generation by improving the robustness of security attack detectors, and advancing code security analysis by focusing on the detection of security-relevant commits. Firstly, since LLMs can struggle to effectively generate code that implements security functions with requirements, such as security attack detectors, we address the challenge of improving the robustness of LLM-generated security attack detectors for different type of injection. We propose a novel approach that integrates Retrieval Augmented Generation (RAG) and Self-Ranking into the LLM pipeline. RAG enhances the robustness of the output by incorporating external knowledge sources, while the Self-Ranking technique, inspired by the concept of Self-Consistency, generates multiple reasoning paths and ranks them to select the most secure function. Our extensive empirical study demonstrates significant improvements in preventing common web security attacks, specifically Cross-Site Scripting and SQL injection attacks. Secondly, we introduce novel approaches to code analysis, specifically for classifying security-relevant commits—those that potentially fix vulnerabilities—using LLMs that examine only the changes in lines of code within Java files. This initiative centers on a simple task: providing LLMs with code changes from commits to determine whether those changes correspond to a security-relevant commit or not. In this thesis we also evaluate the robustness, the consistency and the generalization capabilities of LLMs for code analysis by testing them on obfuscated code, by performing prompt perturbation and by introducing a new method to obtain a negative complement to a dataset of security-relevant commits. Together, these contributions highlight the potential of using LLMs to deliver more accurate code security analysis and to generate code that more effectively implements security requirements.
CABRERA LOZOYA, ROCÍO
SABETTA, ANTONINO
ING - Scuola di Ingegneria Industriale e dell'Informazione
11-dic-2024
2024/2025
I modelli di linguaggio di grandi dimensioni (Large Language Models, LLM) sono sempre più utilizzati nello sviluppo software per attività che spaziano dalla generazione all’analisi della sicurezza del codice. Questa tesi indaga il loro duplice utilizzo: migliorare la generazione di codice critico per la sicurezza aumentando la robustezza dei rilevatori di attacchi, e avanzare nell’analisi della sicurezza del codice focalizzandosi sulla rilevazione di commit rilevanti per la sicurezza. In primo luogo, poiché gli LLM possono faticare a generare efficacemente codice che implementi funzioni di sicurezza con requisiti specifici, come i rilevatori di attacchi di sicurezza, affrontiamo la sfida di migliorare la robustezza dei rilevatori di attacchi generati dagli LLM per diversi tipi di iniezione di code. Proponiamo un approccio innovativo che integra la Generazione Aumentata da Recupero (Retrieval Augmented Generation, RAG) e l’Auto-Classificazione (Self-Ranking) nel processo degli LLM. La RAG aumenta la robustezza del risultato incorporando fonti di conoscenza esterne, mentre la tecnica di Auto-Classificazione, ispirata al concetto di Auto-Consistenza (Self-Consistency), genera percorsi di ragionamento multipli e li classifica per selezionare la funzione più sicura. Il nostro ampio studio empirico dimostra miglioramenti significativi nella prevenzione degli attacchi comuni alla sicurezza web, in particolare attacchi di Cross-Site Scripting e SQL injection. In secondo luogo, introduciamo nuovi approcci all’analisi del codice, specificamente per la classificazione dei commit rilevanti per la sicurezza—quelli che potenzialmente risolvono vulnerabilità—utilizzando LLM che esaminano solo le modifiche nelle linee di codice all’interno dei file Java. Questa iniziativa si concentra su un compito semplice: fornire agli LLM le modifiche di codice dei commit per determinare se tali modifiche corrispondano a un commit rilevante per la sicurezza o meno. In questa tesi, valutiamo anche la robustezza, la coerenza e le capacità di generalizzazione degli LLM nell’analisi del codice testandoli su codice offuscato, eseguendo perturbazioni dei prompt e introducendo un nuovo metodo per ottenere un complemento negativo a un dataset di commit rilevanti per la sicurezza. Questi contributi evidenziano il potenziale degli LLM per fornire un’analisi della sicurezza del codice più accurata e generare codice che implementi in modo più efficace i requisiti di sicurezza.
File allegati
File Dimensione Formato  
2024_12_Aiello.pdf

non accessibile

Descrizione: Testo della tesi
Dimensione 6 MB
Formato Adobe PDF
6 MB Adobe PDF   Visualizza/Apri
2024_12_Aiello_Executive_Summary.pdf

non accessibile

Descrizione: Executive summary
Dimensione 615.09 kB
Formato Adobe PDF
615.09 kB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/230171