Google har slutfört ett pilotprojekt med hjälp av Gemini för att skriva om omfattande C-bibliotek i Rust – och experimentet gav resultat på ett sätt som ingen planerat. Kort efter att företaget migrerat sina produktionssystem till en AI-genererad, minnessäker omskrivning av GIF-bearbetningsbiblioteket giflib, avslöjades en ny out-of-bounds heap-skrivsårbarhet i den ursprungliga C-koden, tilldelad CVE-2026-26740. Googles system var redan immuna.

Företaget neutraliserade effektivt en nolldagssårbarhet genom arkitektur snarare än patchning. Som Googles säkerhetsteknikteam förklarade i ett inlägg på sin Bug Hunters-blogg hade teamet ingen kännedom om det väntande avslöjandet när de utförde omskrivningen – skyddet var en strukturell bieffekt av att eliminera minnesosäker kod. För mer om hur AI håller på att omforma AI-forskning och ingenjörskonst, följ AI Buzz Wire.

Varför minnessäkerhet är viktigt nu

Minnessäkerhetssårbarheter står för ungefär 70 % av sårbarheterna i C- och C++-kodbaser, enligt Googles egen forskning. Tredjepartsbibliotek är en speciell svag punkt eftersom de rutinmässigt analyserar opålitlig data. Samtidigt fortsätter intervallet mellan upptäckt av sårbarhet och vapenisering att krympa – angripare, alltmer assisterade av AI själva, rör sig snabbare än traditionella patchcykler.

Google har länge förespråkat en "Safe Coding"-strategi som prioriterar minnessäkra språk som Rust. Det olösta problemet är den stora installerade basen av C- och C++-beroenden som inte bara kan tas bort. Piloten ställde en direkt fråga: kan en LLM snabbt konvertera dessa beroenden till Rust utan att bryta något?

Målet: giflib

Google valde giflib, ett allmänt använt GIF-bildbehandlingsbibliotek som ursprungligen utvecklades av Eric S. Raymond. Biblioteket erbjöd en idealisk komplexitetsprofil för ett första försök: cirka 3 000 rader kod, inga SIMD- eller monteringsoptimeringar och en stabil kodbas. Kritiskt är att giflib ofta bearbetar opålitlig data i icke-sandlådemiljöer - exakt den typ av attackytor säkerhetsteam oroar sig mest för.

Målet var ambitiöst: ta fram en minnessäker, ABI-kompatibel drop-in-ersättning som kunde distribueras i Googles produktionsinfrastruktur utan störningar i beroende tjänster. Den första översättningen av bibliotekets logik åstadkoms snabbt med hjälp av LLM, men teamet flaggade för två krav som visade sig vara avgörande: noggrann hantering av FFI-gränsen – pekarens livscykel och Rusts ägarsemantik i gränssnittet med befintliga C-anropare – och det som Google kallar "den sociala komponenten av säkerhet", det mänskliga förtroendet som krävs för att distribuera kritiska tjänster.

Valideringshandsken

För att vinna produktionsförtroende genomgick Rust-implementeringen omfattande tester:

  • Regressionstestning i massskala: Validerad mot en datauppsättning av mer än 30 miljoner verkliga GIF-filer, vilket bekräftar utdata som är identiska med den ursprungliga implementeringen
  • Differential fuzzing: En original-mot-Rust fuzzer körde kontinuerligt i över sex dagar och mer än 200 miljoner iterationer utan att hitta några logiska avvikelser
  • Motstridig AI-recension: Specialiserade LLM-uppmaningar användes för att leta efter subtila beteendeskillnader mellan de två kodbaserna som traditionella tester kan missa

Pipeledningen visade sitt värde innan utbyggnaden. Den identifierade ett kantfall i LZW-avkodaren och – mer anmärkningsvärt – avslöjade en redan existerande out-of-bounds-skrivsårbarhet som hade introducerats av en Google-intern äldre patch till den ursprungliga C-källan, som teamet korrigerade i Rust-omskrivningen.

Prestanda blev inte lidande

En vanlig invändning mot minnessäkra språk är kostnaden för kontroll av runtime bounds. Googles övervakning över sina globala bildbehandlingstjänster visade att Rust-implementeringen var prestandaneutral jämfört med C-originalet – ett resultat som företaget säger att det har observerat upprepade gånger i Rust-migreringar.

Det var en oväntad bonus. Eftersom Rust-biblioteket är minnessäkert till sin konstruktion, kunde Google avveckla den resurskrävande sandboxning som vissa produktionstjänster tidigare behövde för att isolera C-biblioteket. Den arkitektoniska förenklingen gav en betydande minskning av svansfördröjningen för bildavkodningsuppgifter.

Öppen källkod — med ärliga varningar

Google har publicerat Rust-omskrivningen på github.com/google/giflib-rs och bidrar med sina resultat tillbaka till communityn. Företaget krediterar också kompletterande mänskligt ledda insatser, såsom Trifecta Tech Foundations manuella omskrivning av zlib till Rust med betydande prestandavinster, som en del av ett bredare ekosystem av lösningar.

Förbehållen är värda att notera. Omskrivningar kräver stora mängder verklig data eller starka befintliga testsviter för att validera beteendemässig likvärdighet, och att avvika från ett uppströmsprojekt genom att byta språk medför en verklig underhållskostnad - särskilt för beroenden under aktiv utveckling. AI-assisterad översättning, med andra ord, accelererar men ersätter inte tekniskt omdöme.

Den större bilden

Piloten är en av de tydligaste demonstrationerna hittills att LLM:er kan leverera strukturella säkerhetsförbättringar i stor skala, inte bara kodförslag. Genom att kombinera hastigheten för LLM-driven översättning med differentiell testning och mänsklig expertgranskning av säkerhetsgränser, hävdar Google, kan hela klasser av sårbarheter dras tillbaka från produktionsinfrastrukturen – innan någon vet vilken specifik CVE som kommer härnäst.

Källa: Google Bug Hunters blogg, "Scaling Memory Safety: AI-Assisted Rewrites of C/C++ Dependencies to Rust."

---

Stay ahead of AI

Få de senaste AI-nyheterna, analyserna och genombrotten – allt på ett ställe.

Läs mer AI-nyheter →