Google ha completato un progetto pilota utilizzando Gemini per riscrivere le librerie C ampiamente diffuse in Rust e l'esperimento ha dato i suoi frutti in un modo che nessuno aveva previsto. Poco dopo che l'azienda ha migrato i propri sistemi di produzione verso una riscrittura sicura della memoria e generata dall'intelligenza artificiale della libreria di elaborazione GIF giflib, è stata rilevata una nuova vulnerabilità di scrittura heap fuori limite nel codice C originale, assegnata a CVE-2026-26740. I sistemi di Google erano già immuni.
L'azienda ha efficacemente neutralizzato una vulnerabilità zero-day attraverso l'architettura anziché l'applicazione di patch. Come ha spiegato il team di ingegneri della sicurezza di Google in un post sul suo blog Bug Hunters, il team non era a conoscenza della divulgazione in sospeso durante l'esecuzione della riscrittura: la protezione era un effetto collaterale strutturale dell'eliminazione del codice non sicuro per la memoria. Per ulteriori informazioni su come l'intelligenza artificiale sta rimodellando la ricerca e l'ingegneria sull'intelligenza artificiale, segui AI Buzz Wire.
Perché la sicurezza della memoria è importante adesso
Secondo la ricerca di Google, le vulnerabilità della sicurezza della memoria rappresentano circa il 70% delle vulnerabilità nelle basi di codice C e C++. Le librerie di terze parti rappresentano un punto particolarmente debole perché analizzano regolarmente dati non attendibili. Allo stesso tempo, l’intervallo tra la scoperta delle vulnerabilità e l’utilizzo di armi continua a ridursi: gli aggressori, sempre più assistiti dalla stessa intelligenza artificiale, si muovono più velocemente dei tradizionali cicli di patch.
Google sostiene da tempo una strategia di "codificazione sicura" che dia priorità ai linguaggi sicuri per la memoria come Rust. Il problema irrisolto è la vasta base installata di dipendenze C e C++ che non possono essere semplicemente eliminate. Il progetto pilota ha posto una domanda diretta: un LLM può convertire rapidamente tali dipendenze in Rust senza rompere nulla?
L'obiettivo: giflib
Google ha scelto giflib, una libreria di elaborazione di immagini GIF ampiamente utilizzata originariamente sviluppata da Eric S. Raymond. La libreria offriva un profilo di complessità ideale per un primo tentativo: circa 3.000 righe di codice, nessuna SIMD o ottimizzazioni di assembly e una base di codice stabile. Fondamentalmente, giflib spesso elabora dati non attendibili in ambienti non sandbox, esattamente il tipo di superficie di attacco di cui i team di sicurezza si preoccupano di più.
L'obiettivo era ambizioso: produrre un sostituto drop-in sicuro per la memoria e compatibile con ABI che potesse essere implementato nell'infrastruttura di produzione di Google senza alcuna interruzione dei servizi dipendenti. La traduzione iniziale della logica della biblioteca è stata realizzata rapidamente con l'assistenza di LLM, ma il team ha individuato due requisiti che si sono rivelati decisivi: un'attenta gestione del confine FFI (ciclo di vita del puntatore e semantica di proprietà di Rust all'interfaccia con i chiamanti C esistenti) e ciò che Google chiama "la componente sociale della sicurezza", la fiducia umana richiesta per implementare riscritture generate dall'intelligenza artificiale nei servizi critici.
Il guanto di sfida della convalida
Per guadagnare la fiducia della produzione, l'implementazione di Rust è stata sottoposta a test approfonditi:
- Test di regressione su larga scala: convalidato rispetto a un set di dati di oltre 30 milioni di GIF reali, confermando risultati identici all'implementazione originale
- Fuzzing differenziale: Un fuzzer originale rispetto a Rust ha funzionato ininterrottamente per oltre sei giorni e più di 200 milioni di iterazioni senza trovare alcuna deviazione logica
- Revisione AI contraddittoria: sono stati utilizzati prompt LLM specializzati per cercare sottili differenze comportamentali tra le due basi di codice che i test tradizionali potrebbero non cogliere
Il gasdotto ha dimostrato la sua validità prima dell'implementazione. Ha identificato un caso limite nel decoder LZW e, più in particolare, ha scoperto una vulnerabilità di scrittura preesistente fuori limite che era stata introdotta da una patch legacy interna di Google al sorgente C originale, che il team ha corretto nella riscrittura di Rust.
Le prestazioni non hanno sofferto
Un'obiezione comune ai linguaggi memory-safe è il costo del controllo dei limiti di runtime. Il monitoraggio di Google sui suoi servizi globali di elaborazione delle immagini ha mostrato che l'implementazione di Rust era neutrale in termini di prestazioni rispetto all'originale C, un risultato che l'azienda afferma di aver osservato ripetutamente nelle migrazioni di Rust.
C'è stato un bonus inaspettato. Poiché la libreria Rust è sicura per costruzione, Google è stata in grado di disattivare il sandboxing ad alta intensità di risorse di cui alcuni servizi di produzione avevano precedentemente bisogno per isolare la libreria C. Questa semplificazione dell'architettura ha prodotto una significativa riduzione della latenza della coda per le attività di decodifica delle immagini.
Open source: con avvertimenti onesti
Google ha pubblicato la riscrittura di Rust su github.com/google/giflib-rs e sta contribuendo con i suoi risultati alla comunità. L'azienda riconosce inoltre agli sforzi complementari guidati dall'uomo, come la riscrittura manuale di zlib in Rust da parte della Trifecta Tech Foundation, con sostanziali miglioramenti delle prestazioni, come parte di un più ampio ecosistema di soluzioni.
Vale la pena notare gli avvertimenti. Le riscritture richiedono grandi quantità di dati del mondo reale o solide suite di test esistenti per convalidare l'equivalenza comportamentale, e deviare da un progetto a monte cambiando le lingue comporta un costo di manutenzione reale, soprattutto per le dipendenze in fase di sviluppo attivo. La traduzione assistita dall’intelligenza artificiale, in altre parole, accelera ma non sostituisce il giudizio ingegneristico.
Il quadro più ampio
Il progetto pilota è una delle dimostrazioni più chiare finora che gli LLM possono fornire miglioramenti della sicurezza strutturale su larga scala, non solo suggerimenti sul codice. Combinando la velocità della traduzione guidata da LLM con test differenziali e revisione da parte di esperti umani dei limiti di sicurezza, sostiene Google, intere classi di vulnerabilità possono essere ritirate dall’infrastruttura di produzione, prima che qualcuno sappia quale specifico CVE verrà dopo.
Fonte: blog di Google Bug Hunters, "Scaling Memory Safety: riscritture assistite dall'intelligenza artificiale delle dipendenze C/C++ in Rust".
---
Stai al passo con l'intelligenza artificialeRicevi le ultime notizie, analisi e scoperte sull'intelligenza artificiale, tutto in un unico posto.
Leggi altre notizie sull'AI →