Un sistema di analisi statica come CodeQL è oggi uno degli strumenti più diffusi per individuare falle di sicurezza nel codice C/C++, ma le sue query continuano a sbagliare: segnalano codice innocuo come pericoloso oppure, peggio, lasciano passare vulnerabilità reali. Un nuovo framework chiamato ARQ, descritto in un paper firmato da Chunyi Wang, promette di correggere automaticamente questi difetti e migliorare in modo sensibile il rilevamento vulnerabilità con CodeQL, senza bisogno di dataset etichettati o template scritti a mano per ogni tipo di bug.
Summary
Punti chiave
- ARQ raffina automaticamente le query CodeQL usando l’esecuzione di programmi C/C++ sintetizzati come prova di verità.
- Il framework ha corretto 12 query ufficiali di CodeQL con tre LLM commerciali: GPT-5.4, Claude-Sonnet-4.6 e Gemini-3.5-flash.
- Le query rifinite individuano fino al 119,8% in più di veri positivi, mantenendo una precisione di almeno il 98,0%.
- ARQ ha risolto tre issue GitHub aperte da fino a 27 mesi nel repository ufficiale di CodeQL.
- Le query migliorate hanno scoperto due bug inediti nelle librerie reali libpng e zlib.
Limiti delle query CodeQL attuali nel rilevamento delle vulnerabilità in C/C++
Il problema di partenza è semplice da capire ma difficile da risolvere: le query di CodeQL, pur essendo uno standard consolidato per l’analisi statica C/C++, non colgono sempre la realtà del codice che analizzano. Gli analizzatori basati su query codificano pattern di codice vulnerabile e li confrontano con il codice sorgente, ma questo meccanismo di corrispondenza resta rigido di fronte alle mille varianti con cui un bug reale può manifestarsi.
Diffusione di falsi positivi e negativi nelle query esistenti
Il paper descrive due tipi di errore che affliggono le query esistenti: i falsi positivi, che segnalano come vulnerabile codice in realtà sicuro, e i falsi negativi, che lasciano invece passare vulnerabilità autentiche senza generare alcun avviso. Questo doppio limite è il motivo per cui molti team di sicurezza continuano a dover verificare manualmente i risultati prodotti dagli scanner automatici, un lavoro che consuma tempo e risorse e riduce la fiducia complessiva nella scansione sicurezza software automatizzata.
Framework ARQ: raffinamento automatico delle query basato su esecuzioni
ARQ affronta il problema da una prospettiva diversa rispetto ai metodi precedenti: invece di correggere le query sulla base di dataset etichettati o della storia dei commit, le testa contro programmi C/C++ generati appositamente e ne osserva il comportamento reale in esecuzione. È un approccio agentico che sposta il baricentro del miglioramento query ARQ dalla teoria alla prova concreta.
Meccanismo per identificare le debolezze delle query attraverso l’esecuzione di programmi sintetici
L’idea centrale del framework è che un programma sintetizzato smaschera la debolezza di una query ogni volta che la sua esecuzione contraddice il verdetto della query stessa. Se il programma è effettivamente vulnerabile ma la query resta muta, si tratta di un difetto da falso negativo; se invece il programma è sicuro ma la query scatta comunque un allarme, il difetto è da falso positivo. Questo confronto tra teoria e pratica diventa la prova di verità su cui costruire la correzione.
Ciclo iterativo di miglioramento con LLM senza dati etichettati o template di vulnerabilità
Una volta individuate le discrepanze, ARQ avvia un ciclo di raffinamento affidato a un modello linguistico di grandi dimensioni, che ripara la query usando proprio quelle discrepanze come riferimento. La differenza rispetto ai metodi precedenti è netta: non servono dataset etichettati, non serve la cronologia dei commit e non servono template scritti apposta per ogni categoria di vulnerabilità. È un processo di ottimizzazione query LLM che si autoalimenta con l’evidenza empirica raccolta a ogni iterazione.
Valutazione e impatto delle rifiniture ARQ sulle query CodeQL
I ricercatori hanno testato ARQ su un caso concreto e misurabile: dodici query ufficiali di CodeQL sottoposte al processo di correzione automatica, con risultati che vanno oltre la semplice dimostrazione teorica e toccano bug reali già presenti in librerie diffuse.
Risultati delle rifiniture con GPT-5.4, Claude-Sonnet-4.6 e Gemini-3.5-flash
Per verificare l’efficacia del framework, il paper ha messo alla prova tre modelli linguistici commerciali distinti: GPT-5.4, Claude-Sonnet-4.6 e Gemini-3.5-flash. Ognuno di questi LLM è stato usato per guidare il ciclo di raffinamento sulle dodici query selezionate, un dettaglio che conta perché dimostra come l’approccio non dipenda da un singolo fornitore o da un’architettura specifica di modello.
Miglioramenti nelle performance su dataset benchmark Juliet v1.3 e FormAI v2
Il confronto tra le query originali e quelle rifinite da ARQ è stato condotto sui dataset Juliet v1.3 e FormAI v2, due benchmark di riferimento nel settore. Il dato più significativo riguarda i veri positivi individuati: le query corrette da ARQ ne rilevano fino al 119,8% in più rispetto alle versioni originali, mantenendo comunque una precisione di almeno il 98,0% in tutti i test. Numeri di questa portata cambiano concretamente il rapporto costi-benefici di uno strumento di analisi statica C/C++: più bug reali intercettati, senza un’ondata parallela di allarmi inutili da smaltire manualmente.
Risoluzione di issue GitHub e scoperta di nuovi bug in libpng e zlib
L’impatto pratico di ARQ non si è fermato ai benchmark. Il framework ha risolto tre issue rimaste aperte nel repository ufficiale delle query CodeQL su GitHub, alcune ferme da ben 27 mesi, segno che si trattava di difetti reali e persistenti, non di casi marginali. Ancora più rilevante per chi lavora sul campo: le query rifinite hanno scoperto due bug inediti nelle librerie libpng e zlib, due componenti software usati in innumerevoli progetti in tutto il mondo.
È qui che si misura il valore di un framework come ARQ: non basta migliorare un punteggio su un dataset accademico, conta trovare falle vere in software già in produzione. Il fatto che uno strumento nato per correggere query di analisi statica finisca per esporre bug sfuggiti per anni a librerie ampiamente studiate come libpng e zlib segnala quanto margine di miglioramento resti ancora nell’attuale generazione di strumenti per la scansione sicurezza software, anche quelli considerati maturi e affidabili.
FAQ
Quale problema cerca di risolvere ARQ nel rilevamento delle vulnerabilità in C/C++?
ARQ affronta i falsi positivi e i falsi negativi delle query CodeQL esistenti, raffinandole automaticamente grazie all’evidenza raccolta dall’esecuzione di programmi sintetizzati.
Come individua ARQ le debolezze delle query CodeQL?
ARQ rileva una debolezza ogni volta che l’esecuzione di un programma sintetizzato contraddice il verdetto della query: una discrepanza che indica la presenza di falsi positivi o falsi negativi.
Che ruolo hanno i modelli linguistici (LLM) nel framework ARQ?
ARQ affida a un ciclo iterativo basato su LLM la riparazione delle query, sfruttando il riscontro dell’esecuzione senza bisogno di dati etichettati o template specifici per tipologia di vulnerabilità.
Quali miglioramenti concreti ha mostrato ARQ nel correggere le query CodeQL?
Le query rifinite da ARQ hanno aumentato il rilevamento dei veri positivi fino al 119,8%, mantenendo almeno il 98% di precisione, oltre ad aver risolto tre issue GitHub di lunga data e scoperto due nuovi bug in librerie reali.
Contenuto realizzato con l’assistenza dell’intelligenza artificiale e con revisione editoriale umana.

