Google ha condiviso i primi risultati della sua ricerca su CodeMender, un nuovo agente basato sull’intelligenza artificiale progettato per migliorare automaticamente la sicurezza del codice. L’agente può sia correggere in modo reattivo nuove vulnerabilità sia riscrivere in modo proattivo il codice esistente per eliminare intere classi di difetti di sicurezza. Man mano che gli strumenti basati sull’intelligenza artificiale diventano più efficaci nello scoprire le vulnerabilità del software, si prevede che il volume dei problemi identificati supererà la capacità degli sviluppatori umani di risolverli. CodeMender è progettato per risolvere questo problema automatizzando la creazione e l’applicazione di patch di sicurezza di alta qualità. Negli ultimi sei mesi, il progetto ha già presentato 72 correzioni di sicurezza a progetti open source, alcuni con codebase grandi fino a 4,5 milioni di righe di codice.
Come funziona Google CodeMender
CodeMender è un agente autonomo che utilizza Gemelli Pensa profondamente modelli per eseguire il debug e correggere vulnerabilità complesse. È dotato di una serie di strumenti che gli consentono di ragionare sul codice prima di apportare modifiche e di convalidare automaticamente tali modifiche per garantire che siano corrette e non causino regressioni.
Il processo di convalida è una componente critica, progettata per prevenire errori costosi. CodeMender presenta solo patch di alta qualità per la revisione umana che sono confermate per risolvere la causa principale di un problema, che sono funzionalmente corrette, non causano regressioni e seguono le linee guida sullo stile del progetto. Il sistema utilizza diverse tecniche per raggiungere questo obiettivo:
- Analisi avanzata del programma: CodeMender utilizza strumenti per l’analisi statica, l’analisi dinamica, i test differenziali e il fuzzing per esaminare attentamente i modelli di codice e il flusso di dati. Ciò consente di identificare meglio le cause profonde dei difetti di sicurezza.
- Sistemi multi-agente: Il sistema impiega agenti specializzati per compiti specifici. Ad esempio, un ampio strumento di critica basato su modelli linguistici evidenzia le differenze tra il codice originale e quello modificato per verificare che una modifica proposta non introduca nuovi problemi, consentendo all’agente principale di autocorreggersi secondo necessità.
Correzione delle vulnerabilità attive
Per correggere una vulnerabilità in modo efficace, CodeMender utilizza strumenti come un debugger e un browser del codice sorgente per individuare la causa principale prima di ideare una soluzione. In un esempio, un rapporto di arresto anomalo indicava un overflow del buffer di heap, ma l’analisi dell’agente ha stabilito che il problema reale era una gestione errata dello stack di elementi XML durante l’analisi. Sebbene la patch finale abbia modificato solo poche righe di codice, identificare la vera causa principale ha richiesto un ragionamento complesso. In un altro caso, l’agente ha creato una patch non banale per risolvere un problema complesso relativo alla durata dell’oggetto modificando un sistema personalizzato per generare codice C all’interno del progetto.
Protezione proattiva del codice esistente
CodeMender è inoltre progettato per riscrivere in modo proattivo il codice per utilizzare strutture dati e API più sicure. Ad esempio, l’agente è stato distribuito per applicare le annotazioni `-fbounds-safety` a parti della libreria di compressione delle immagini libwebp ampiamente utilizzata. Quando applicate, queste annotazioni indicano al compilatore di aggiungere controlli dei limiti al codice, che possono impedire lo sfruttamento delle vulnerabilità di buffer overflow.
Un overflow del buffer di heap scoperto in precedenza in libwebp (CVE-2023-4863) è stato utilizzato come parte di un exploit iOS senza clic. Con le annotazioni aggiunte da CodeMender, quella vulnerabilità e molte altre simili sarebbero state rese non sfruttabili. L’agente può correggere automaticamente nuovi errori di compilazione o verificare errori derivanti dalle proprie annotazioni e utilizza uno strumento basato su LLM per verificare che le modifiche non abbiano alterato la funzionalità prevista del codice.
Stato attuale e progetti futuri
Tutte le patch attualmente generate da CodeMender vengono esaminate da ricercatori umani prima di essere inviate a progetti open source. Google sta gradualmente aumentando il numero di patch inviate per garantire un’elevata qualità e per rispondere sistematicamente al feedback della comunità open source. Il team prevede di contattare i manutentori di progetti open source critici con patch generate da CodeMender. Basandosi sul feedback di questo processo, l’obiettivo è quello di rilasciare infine CodeMender come strumento che tutti gli sviluppatori di software possano utilizzare per mantenere sicure le proprie basi di codice.





