Tre patch su quattro generate da AI lasciano qualcosa di rotto
Chiedi a un modello AI avanzato di correggere una vulnerabilità reale e ti consegnerà qualcosa che sembra una soluzione. Legge come una patch che un maintainer scriverebbe. Quando c'è un test, spesso lo supera. Circa una volta su quattro, è una soluzione.
I ricercatori di 1Password hanno valutato 6.080 patch per sei CVEs appena divulgate, e i fallimenti sono raramente di tipo ovvio: un percorso di sfruttamento bloccato da un controllo con il codice vulnerabile ancora presente, un bug corretto in una funzione e lasciato intatto nella sua gemella caratteristica per caratteristica, un errore di memoria chiuso e un nuovo aperto nello stesso helper.
Freenginx, un server web, permette agli operatori del sito di scrivere piccoli programmi Perl che si eseguono quando arriva una richiesta. Un difetto di questa funzione, un errore di memoria del tipo chiamato use-after-free, permette a un visitatore di far crashare il server. Trail of Bits ha inviato ai maintainer una correzione tramite Patch the Planet, l'iniziativa che gestisce con OpenAI che consegna ai maintainer codice finito invece di un altro rapporto di bug. I maintainer hanno rifiutato la versione e hanno scritto la loro. La versione rifiutata ripara due dei tre punti in cui risiede il difetto; la versione dei maintainer ne ripara tutti e tre. Entrambe aggiungono anche un nuovo modo per far crashare il server, e raggiungerlo richiede solo un client ordinario che avvia una richiesta e poi si zittisce.
Off-by-1 Labs, il nuovo gruppo di ricerca sulla sicurezza all'interno di 1Password, ha rilevato quel secondo crash e lo ha segnalato ai maintainer di freenginx il 29 giugno; una correzione è uscita il 2 luglio. Lo stesso gruppo ha poi impostato un patcher automatico sul difetto originale e ha fatto scrivere a ChatGPT 5.5 270 tentativi di correzione. Il suo revisore ha giudicato 114 di quei tentativi aver chiuso il buco originale e ha trovato un nuovo problema in ognuna delle 114. Su 270 tentativi, nulla è uscito pulito.
Quella campagna è stata uno studio di caso allegato a quello più ampio, che ha messo ChatGPT 5.5 e Claude Opus 4.8 contro CVEs divulgati questa primavera e ha scartato ogni esecuzione in cui il modello andava a caccia della soluzione ufficiale. Circa la metà delle patch sopravvissute ha lasciato almeno un percorso sfruttabile aperto. Vicino a una su venti ha introdotto una nuova vulnerabilità, a volte in aggiunta al fallimento nel chiudere l'originale. La maggior parte delle restanti mancanze ha chiuso il bug originale ma ha alterato il comportamento lungo la strada, rifiutando input che il software usava accettare o riscrivendo un parser.
Se devi ricordare una cosa dallo studio, fallo con la carenza di fallimenti visibili. Nulla in una patch che lascia il bug aperto annuncia che qualcosa non va.
I modelli corrono l'esempio, non il bug
Consegna a un modello un riproduttore che dimostra un input malizioso e patcha il percorso del codice di quell'input. Un umano legge lo stesso riproduttore come un'istanza di un problema generale. I modelli no. Più di un terzo delle patch valutate come riuscite sono state inoltre segnalate come fragili, meaning che hanno bloccato lo sfruttamento dimostrato con un controllo stretto mentre lasciavano il codice vulnerabile lì, raggiungibile di nuovo non appena qualcuno trova un altro modo per entrare.
Il bug di Chromium, CVE-2026-8512, mostra il fallimento a distanza ravvicinata. Chrome guarda le cartelle su macOS per i cambiamenti, e il sistema operativo chiama indietro Chrome quando qualcosa si muove. La soluzione ufficiale instrada quel callback attraverso un piccolo oggetto intermedio, e richiede due parti separate del codice per mantenere una pretesa su quell'oggetto in modo che non possa essere scartato mentre un callback è ancora in esecuzione. Entrambi i modelli hanno sistematicamente disposto la prima pretesa e saltato la seconda. Il difetto non è scomparso. Si è spostato.
L'impostazione che gira finché il test non smette di fallire è stata la peggiore qui. Il suo test non esercita mai il caso che la seconda pretesa protegge, quindi una patch incompleta passa e l'agente si ferma lì.
Un consiglio sbagliato è peggio di nessuno
Si è scoperto che il consiglio di correzione conta più della scelta del modello o della progettazione dell'imbracatura. I prompt che portano una direzione di correzione corretta hanno chiuso il bug circa due terzi delle volte. I prompt che portano una direzione plausibile ma sbagliata, del tipo che un bot di revisione AI o un triage di pentest sicuro potrebbe fornire, sono crollati a circa uno su sei. Questi contano qualsiasi patch che abbia chiuso il buco originale, incluse quelle che hanno rotto il comportamento o aperto qualcosa di nuovo, un criterio più ampio di quello di uno su quattro sopra.
Una direzione sbagliata costa molto di più di quanto una direzione giusta compri. Se non puoi garantire la correzione che suggerisci a un agente di patching, passa il bug e resta in silenzio. Nelle esecuzioni date con una direzione sbagliata con sicurezza, le chiamate degli agenti stessi a volte hanno restituito informazioni in contraddizione con il prompt, e i modelli sono andati avanti con il prompt comunque.
Un contesto corretto più ricco ha aiutato, e un'imbracatura iterativa ha battuto un tentativo singolo offline. Nessuno dei due ha spostato l'ago da qualche parte vicino a quanto la correttezza del consiglio.
Lo stesso modello ha ottenuto risultati selvaggiamente diversi su codici diversi.
Claude ha corretto pulitamente il bug di esecuzione remota di Exim circa tre quarti delle volte. Sul consiglio di bypass della CLI Gemini è riuscito sotto l'1%, stesso modello e stessa configurazione.
Gli autori non hanno inseguito il perché, e dicono che non possono: con un CVE per base di codice, il bug e la base di codice non possono essere separati come cause. Quello che rimane è un avvertimento contro la lettura di qualsiasi media industriale come una previsione per il proprio repository. Lo strumento dietro lo studio è pubblico proprio per questo motivo, così un'organizzazione può eseguirlo contro i bug che ha già corretto e ottenere un numero locale invece di quello di qualcun altro.
I modelli hanno ricostruito un bug che il kernel aveva già spedito
Copy Fail, l'elevazione dei privilegi del kernel Linux divulgata ad aprile, ha prodotto il tasso più alto di nuove vulnerabilità di qualsiasi target per Claude e vicino al più alto per ChatGPT. La soluzione ufficiale per esso ha annullato un'ottimizzazione della memoria e, nel farlo, ha lasciato cadere una guardia di offset e introdotto una scrittura heap off-by-one che i maintainer hanno dovuto correggere in un commit successivo. Chiedendo di correggere lo stesso bug, circa un terzo delle patch di ciascun modello ha rigenerato quel revert difettoso, off-by-one incluso.
Nello stesso tratto di codice che i modelli stavano riscrivendo c'era un secondo difetto, uno che nessuno aveva chiesto loro di esaminare. I maintainer del kernel lo hanno chiuso separatamente, in un commit tutto suo. Ogni patch in entrambe le campagne lo ha ignorato, incluse quelle che hanno corretto Copy Fail pulitamente e le diverse centinaia che hanno modificato quel file esatto. Le uniche patch che lo hanno chiuso sono arrivate da esecuzioni che i ricercatori avevano già scartato per aver copiato la soluzione ufficiale. I modelli patchano il bug nel ticket e nient'altro, anche quando il nient'altro è davanti a loro.
Valutare 6.080 patch a mano non era possibile, quindi lo studio si basa su validator di modelli, incrociati tra loro e controllati a campione da umani. Su un campione, i validator e i revisori umani sono stati d'accordo sulla valutazione esatta circa due terzi delle volte, e i due modelli sono stati in disaccordo tra loro abbastanza spesso perché gli autori mediino i loro verdetti invece di fidarsi di uno. L'off-by-one di Copy Fail è la cosa più chiara che è sfuggita: i revisori automatici lo hanno catturato in alcune dozzine di patch su 114. Il tasso di nuove vulnerabilità per Claude è stato del 14,2%, mentre per ChatGPT è stato del 12,5%.
Cosa significa tutto questo?
Questo studio dimostra che, mentre i modelli linguistici moderni possono essere utili per correggere i bug, non sono ancora perfetti. Anche se possono superare i test, ci sono ancora casi in cui introducono nuove vulnerabilità o non riescono a correggere completamente un bug. È importante che gli sviluppatori siano consapevoli di questi limiti e continuino a testare e verificare le correzioni prima di implementarle.
Inoltre, è chiaro che i modelli hanno bisogno di un contesto corretto e di un consiglio appropriato per funzionare al meglio. Senza di essi, possono facilmente fare più male che bene. Man mano che la tecnologia continua a evolversi, è probabile che vedremo miglioramenti in queste aree, ma per ora, la cautela è la parola d'ordine.
L'impatto sull'industria e le future direzioni
Questo studio solleva importanti domande sull'adozione dei modelli linguistici nell'industria del software. Molte aziende stanno già sperimentando l'uso di AI per la correzione automatica di bug, ma i risultati di questo studio suggeriscono che tale pratica potrebbe comportare rischi significativi. Le nuove vulnerabilità introdotte dalle patch generate dall'AI potrebbero essere ancora più pericolose delle vulnerabilità originali, poiché potrebbero passare inosservate durante i test tradizionali.
Per mitigare questi rischi, è fondamentale che gli sviluppatori adottino un approccio critico verso le patch generate dall'AI. Questo potrebbe includere l'esecuzione di test più rigorosi, l'analisi manuale delle patch e l'uso di strumenti di validazione avanzati. Inoltre, potrebbe essere utile sviluppare metodologie specifiche per identificare e gestire le vulnerabilità introdotte dall'AI.
Il ruolo dell'educazione e della formazione
L'uso efficace dei modelli linguistici per la correzione di bug richiede una comprensione approfondita sia delle capacità che dei limiti di queste tecnologie. Gli sviluppatori devono essere formati non solo sull'uso pratico di questi strumenti, ma anche sui principi sottostanti e sui potenziali rischi associati. Questo potrebbe includere corsi di formazione su come interpretare i risultati delle patch generate dall'AI, come identificare potenziali vulnerabilità e come integrare l'AI nei processi di sviluppo esistenti.
Inoltre, è importante che i ricercatori continuino a esplorare modi per migliorare l'accuratezza e la sicurezza delle patch generate dall'AI. Questo potrebbe includere lo sviluppo di nuovi algoritmi, l'ottimizzazione dei modelli esistenti e la creazione di framework per la validazione e l'analisi delle patch.
Le implicazioni per la sicurezza informatica
Le scoperte di questo studio hanno implicazioni significative per il campo della sicurezza informatica. Se le patch generate dall'AI vengono ampiamente adottate senza un'adeguata comprensione dei loro limiti, potrebbero emergere nuove vulnerabilità che potrebbero essere sfruttate da attori malevoli. Questo sottolinea l'importanza di un approccio proattivo alla sicurezza, che includa non solo l'uso di strumenti avanzati, ma anche una comprensione approfondita dei rischi e delle minacce potenziali.
Inoltre, i risultati di questo studio potrebbero influenzare lo sviluppo di standard e linee guida per l'uso di AI nella correzione di bug. Gli organismi di standardizzazione e i gruppi di esperti potrebbero dover sviluppare raccomandazioni specifiche per garantire che le patch generate dall'AI siano sicure ed efficaci.
Conclusioni
Mentre i modelli linguistici moderni offrono un grande potenziale per la correzione automatica di bug, questo studio dimostra che ci sono ancora molte sfide da affrontare. Gli sviluppatori devono essere consapevoli dei limiti di queste tecnologie e adottare un approccio critico verso le patch generate dall'AI. Allo stesso tempo, i ricercatori devono continuare a esplorare modi per migliorare l'accuratezza e la sicurezza di queste tecnologie.
In un mondo in cui la sicurezza informatica è sempre più importante, è fondamentale che l'industria, i ricercatori e gli sviluppatori collaborino per garantire che le tecnologie emergenti siano utilizzate in modo sicuro ed efficace. Solo attraverso un approccio collaborativo e proattivo possiamo sperare di affrontare le sfide complesse che ci attendono.
Nota Editoriale e Disclaimer
Le guide e i contenuti pubblicati su GoYou sono frutto di attività di ricerca e analisi indipendente, a scopo informativo, educativo e di approfondimento.
GoYou non costituisce una testata giornalistica né un prodotto editoriale ai sensi della Legge n. 62/2001 e non svolge attività di informazione in tempo reale.
Il progetto GoYou non fornisce consulenza professionale, tecnica, legale o finanziaria e declina ogni responsabilità per l’uso improprio delle informazioni pubblicate.
Nel settore Crypto, ogni investimento comporta rischi: si invita il lettore a informarsi sempre in modo autonomo prima di assumere qualsiasi decisione.