Google zakończył projekt pilotażowy, wykorzystując Gemini do przepisania szeroko stosowanych bibliotek C w języku Rust — a eksperyment opłacił się w sposób, jakiego nikt nie planował. Krótko po tym, jak firma przeprowadziła migrację swoich systemów produkcyjnych do generowanej przez sztuczną inteligencję, bezpiecznej dla pamięci wersji biblioteki przetwarzania GIF giflib, w oryginalnym kodzie C ujawniono nową lukę w zabezpieczeniach umożliwiającą zapis na stercie poza granicami, oznaczoną jako CVE-2026-26740. Systemy Google były już odporne.

Firma skutecznie zneutralizowała lukę dnia zerowego poprzez architekturę, a nie łatanie. Jak wyjaśnił zespół inżynierów ds. bezpieczeństwa Google w poście na blogu Bug Hunters, podczas ponownego zapisywania nie miał wiedzy o oczekującym ujawnieniu — ochrona była strukturalnym efektem ubocznym eliminacji kodu zagrażającego pamięci. Więcej informacji o tym, jak sztuczna inteligencja zmienia badania i inżynieria nad sztuczną inteligencją, można znaleźć na stronie AI Buzz Wire.

Dlaczego bezpieczeństwo pamięci ma teraz znaczenie

Według własnych badań Google luki w zabezpieczeniach pamięci stanowią około 70% luk w zabezpieczeniach baz kodu C i C++. Biblioteki innych firm są szczególnie słabym punktem, ponieważ rutynowo analizują niezaufane dane. Jednocześnie odstęp między wykryciem luk a uzbrojeniem stale się kurczy – napastnicy, w coraz większym stopniu wspomagani przez samą sztuczną inteligencję, poruszają się szybciej niż tradycyjne cykle łatania.

Google od dawna opowiada się za strategią „bezpiecznego kodowania”, która priorytetowo traktuje języki bezpieczne dla pamięci, takie jak Rust. Nierozwiązanym problemem jest ogromna zainstalowana baza zależności C i C++, których nie można po prostu usunąć. Pilot zadał bezpośrednie pytanie: czy LLM może szybko przekonwertować te zależności na Rust, nie psując niczego?

Cel: giflib

Firma Google wybrała giflib, powszechnie używaną bibliotekę do przetwarzania obrazów GIF, pierwotnie opracowaną przez Erica S. Raymonda. Biblioteka oferowała idealny profil złożoności już przy pierwszej próbie: około 3000 linii kodu, brak optymalizacji SIMD i montażu oraz stabilna baza kodu. Co najważniejsze, giflib często przetwarza niezaufane dane w środowiskach innych niż piaskownica — dokładnie tego rodzaju zespoły ds. bezpieczeństwa powierzchni ataku martwią się najbardziej.

Cel był ambitny: stworzyć bezpieczny dla pamięci, zgodny z ABI zamiennik, który można wdrożyć w infrastrukturze produkcyjnej Google bez zakłócania zależnych usług. Początkowe tłumaczenie logiki biblioteki udało się szybko przeprowadzić dzięki pomocy LLM, ale zespół określił dwa wymagania, które okazały się decydujące: ostrożne zarządzanie granicą FFI — cykl życia wskaźnika i semantyka własności Rusta na interfejsie z istniejącymi obiektami wywołującymi C — oraz to, co Google nazywa „społecznym elementem bezpieczeństwa”, czyli ludzkie zaufanie wymagane do wdrażania przeróbek generowanych przez sztuczną inteligencję w krytycznych usługach.

Wyzwanie walidacji

Aby zdobyć zaufanie produkcyjne, wdrożenie Rusta przeszło wyczerpujące testy:

  • Testowanie regresji na masową skalę: Sprawdzone na zestawie danych ponad 30 milionów rzeczywistych plików GIF, potwierdzające, że wyniki są identyczne z pierwotną implementacją
  • Rozmycie różnicowe: Fuzzer oryginału i rdzy działał nieprzerwanie przez ponad sześć dni i ponad 200 milionów iteracji, nie znajdując żadnych odchyleń logicznych
  • Przegląd kontradyktoryjnej sztucznej inteligencji: Wykorzystano specjalistyczne podpowiedzi LLM w celu wykrycia subtelnych różnic w zachowaniu między dwiema bazami kodu, które mogły zostać przeoczone w tradycyjnych testach

Rurociąg sprawdził się przed rozmieszczeniem. Zidentyfikował przypadek brzegowy w dekoderze LZW i — co ważniejsze — odkrył istniejącą wcześniej lukę w zabezpieczeniach umożliwiającą zapis poza zakresem, która została wprowadzona przez wewnętrzną łatkę Google do oryginalnego źródła C, którą zespół poprawił w przepisaniu Rusta.

Wydajność nie ucierpiała

Częstym zarzutem wobec języków bezpiecznych dla pamięci jest koszt sprawdzania granic w czasie wykonywania. Monitorowanie Google w ramach globalnych usług przetwarzania obrazów wykazało, że implementacja Rusta była neutralna pod względem wydajności w porównaniu z oryginalną wersją C — wynik, który firma twierdzi, że wielokrotnie obserwowała podczas migracji Rusta.

Pojawił się niespodziewany bonus. Ponieważ biblioteka Rust jest z założenia bezpieczna dla pamięci, firmie Google udało się zrezygnować z wymagającej dużej ilości zasobów piaskownicy, której niektóre usługi produkcyjne potrzebowały wcześniej do izolowania biblioteki C. To uproszczenie architektury spowodowało znaczne zmniejszenie opóźnienia końcowego w zadaniach dekodowania obrazu.

Otwarte oprogramowanie — ze szczerymi zastrzeżeniami

Google opublikowało nową wersję Rusta na github.com/google/giflib-rs i przekazuje swoje ustalenia społeczności. Firma docenia także uzupełniające wysiłki kierowane przez człowieka, takie jak ręczne przepisanie zlib na język Rust przez Fundację Trifecta Tech, ze znacznym wzrostem wydajności, jako część szerszego ekosystemu rozwiązań.

Warto zwrócić uwagę na zastrzeżenia. Ponowne zapisanie wymaga dużych ilości danych ze świata rzeczywistego lub silnych istniejących zestawów testów w celu sprawdzenia równoważności behawioralnej, a odejście od projektu źródłowego poprzez zmianę języka wiąże się z rzeczywistymi kosztami utrzymania — szczególnie w przypadku zależności w fazie aktywnego rozwoju. Innymi słowy, tłumaczenie wspomagane sztuczną inteligencją przyspiesza, ale nie zastępuje oceny inżynierskiej.

Większy obraz

Pilotaż jest jednym z najwyraźniejszych dotychczas dowodów na to, że LLM mogą zapewnić poprawę bezpieczeństwa strukturalnego na dużą skalę, a nie tylko sugestie dotyczące kodu. Google twierdzi, że łącząc szybkość tłumaczenia opartego na LLM z testami różnicowymi i weryfikacją granic bezpieczeństwa przez człowieka, całe klasy luk w zabezpieczeniach mogą zostać wycofane z infrastruktury produkcyjnej, zanim ktokolwiek będzie wiedział, który konkretny CVE będzie następny.

Źródło: blog Google Bug Hunters, „Bezpieczeństwo skalowania pamięci: przepisywanie zależności C/C++ wspomagane sztuczną inteligencją do poziomu rdzy”.

---

Wyprzedź sztuczną inteligencję

Otrzymuj najnowsze wiadomości, analizy i przełomowe informacje dotyczące sztucznej inteligencji — wszystko w jednym miejscu.

Przeczytaj więcej aktualności o sztucznej inteligencji →