Google DeepMind ha messo in campo un nuovo agente AI progettato per trovare e correggere autonomamente le vulnerabilità di sicurezza critiche nel codice del software. Il sistema, giustamente chiamato CodeMender, ha già apportato 72 correzioni di sicurezza a progetti open-source consolidati negli ultimi sei mesi.
L’identificazione e la correzione delle vulnerabilità è un processo notoriamente difficile e lungo, anche con l’aiuto di metodi automatizzati tradizionali come il fuzzing. La ricerca di Google DeepMind, che comprende progetti basati sull’intelligenza artificiale come Big Sleep e OSS-Fuzz, si è dimostrata efficace nello scoprire nuove vulnerabilità zero-day in codici ben controllati. Questo successo, tuttavia, crea un nuovo collo di bottiglia: man mano che l’IA accelera la scoperta delle falle, si intensifica l’onere per gli sviluppatori umani di risolverle.
CodeMender è stato progettato per risolvere questo squilibrio. Funziona come un agente AI autonomo che adotta un approccio completo per risolvere la sicurezza del codice. Le sue capacità sono sia reattive, in quanto gli permettono di correggere istantaneamente le vulnerabilità appena scoperte, sia proattive, in quanto gli consentono di riscrivere il codice esistente per eliminare intere classi di difetti di sicurezza prima che possano essere sfruttati. Questo permette agli sviluppatori e ai manutentori dei progetti di dedicare più tempo alla creazione di funzionalità e al miglioramento del software.
Il sistema funziona sfruttando le capacità di ragionamento avanzato dei recenti modelli Gemini Deep Think di Google. Questa base consente all’agente di eseguire il debug e di risolvere complessi problemi di sicurezza con un elevato grado di autonomia. A tal fine, il sistema è dotato di una serie di strumenti che gli consentono di analizzare e ragionare sul codice prima di implementare qualsiasi modifica. CodeMender include anche un processo di validazione per garantire che le modifiche siano corrette e non introducano nuovi problemi, noti come regressioni.
Sebbene i modelli linguistici di grandi dimensioni stiano avanzando rapidamente, un errore in materia di sicurezza del codice può avere conseguenze costose. La struttura di validazione automatica di CodeMender è quindi essenziale. Controlla sistematicamente che le modifiche proposte risolvano il problema alla radice, siano funzionalmente corrette, non interrompano i test esistenti e aderiscano alle linee guida sullo stile di codifica del progetto. Solo le patch di alta qualità che soddisfano questi criteri rigorosi vengono sottoposte alla revisione umana.
Per migliorare l’efficacia della correzione del codice, il team di DeepMind ha sviluppato nuove tecniche per l’agente AI. CodeMender impiega un’analisi avanzata dei programmi, utilizzando una suite di strumenti che comprende analisi statica e dinamica, test differenziali, fuzzing e risolutori SMT. Questi strumenti gli permettono di esaminare sistematicamente i modelli di codice, il flusso di controllo e il flusso di dati per identificare le cause fondamentali delle falle di sicurezza e delle debolezze architettoniche.
Il sistema utilizza anche un’architettura multi-agente, in cui vengono impiegati agenti specializzati per affrontare aspetti specifici di un problema. Ad esempio, uno strumento dedicato alla critica basata su modelli linguistici di grandi dimensioni rivela le differenze tra il codice originale e quello modificato. Questo permette all’agente principale di verificare che le modifiche proposte non introducano effetti collaterali indesiderati e di autocorreggere il proprio approccio quando necessario.
In un esempio pratico, CodeMender ha affrontato una vulnerabilità in cui un crash report indicava un heap buffer overflow. Sebbene la patch finale richiedesse solo la modifica di alcune righe di codice, la causa principale non era immediatamente evidente. Utilizzando un debugger e strumenti di ricerca del codice, l’agente ha determinato che il vero problema era un problema di gestione dello stack non corretto con gli elementi dell’Extensible Markup Language (XML) durante l’analisi, situato in un altro punto del codice. In un altro caso, l’agente ha ideato una patch non banale per un complesso problema di durata degli oggetti, modificando un sistema personalizzato per la generazione di codice C all’interno del progetto di destinazione.
Oltre a reagire semplicemente ai bug esistenti, CodeMender è stato progettato per proteggere in modo proattivo il software dalle minacce future. Il team ha utilizzato l’agente per applicare le annotazioni -fbounds-safety a parti di libwebp, una libreria di compressione di immagini molto utilizzata. Queste annotazioni istruiscono il compilatore ad aggiungere controlli sui limiti al codice, che possono impedire a un aggressore di sfruttare un buffer overflow per eseguire codice arbitrario.
Questo lavoro è particolarmente importante perché una vulnerabilità di heap buffer overflow in libwebp, segnalata come CVE-2023-4863, è stata utilizzata da un attore di minacce in un exploit iOS zero-click diversi anni fa. DeepMind fa notare che, grazie a queste annotazioni, quella specifica vulnerabilità, insieme alla maggior parte degli altri buffer overflow presenti nelle sezioni annotate, sarebbe stata resa non sfruttabile.
La correzione proattiva del codice da parte dell’agente AI comporta un sofisticato processo decisionale. Quando applica le annotazioni, può correggere automaticamente i nuovi errori di compilazione e i fallimenti dei test che derivano dalle sue stesse modifiche. Se gli strumenti di convalida rilevano che una modifica ha compromesso una funzionalità, l’agente si autocorregge in base al feedback e tenta una soluzione diversa.
Nonostante questi primi risultati promettenti, Google DeepMind sta adottando un approccio cauto e deliberato alla distribuzione, con una forte attenzione all’affidabilità. Al momento, ogni patch generata da CodeMender viene rivista da ricercatori umani prima di essere inviata a un progetto open-source. Il team sta gradualmente aumentando gli invii per garantire un’elevata qualità e per incorporare sistematicamente il feedback della comunità open-source.
In prospettiva, i ricercatori intendono raggiungere i manutentori di progetti open-source critici con le patch generate da CodeMender. Grazie all’iterazione del feedback della comunità, sperano di rilasciare CodeMender come strumento disponibile al pubblico per tutti gli sviluppatori di software.
Il team di DeepMind intende inoltre pubblicare nei prossimi mesi articoli e relazioni tecniche per condividere le proprie tecniche e i propri risultati. Questo lavoro rappresenta i primi passi nell’esplorazione del potenziale degli agenti di intelligenza artificiale per correggere in modo proattivo il codice e migliorare radicalmente la sicurezza del software per tutti.



