Google завершив пілотний проект із використанням Gemini для переписування широко розгорнутих бібліотек C у Rust — і експеримент окупився так, як ніхто не планував. Невдовзі після того, як компанія перевела свої виробничі системи на безпечну для пам’яті перезапис бібліотеки обробки GIF giflib, згенеровану штучним інтелектом, у оригінальному коді C, якому присвоєно CVE-2026-26740, було виявлено нову вразливість запису поза межами купи. Системи Google вже були захищені.

Компанія ефективно нейтралізувала вразливість нульового дня за допомогою архітектури, а не виправлення. Як пояснила команда інженерів безпеки Google у своєму блозі Bug Hunters, команда не знала про очікуване розкриття під час перезапису — захист був структурним побічним ефектом усунення небезпечного для пам’яті коду. Щоб дізнатися більше про те, як штучний інтелект змінює [дослідження та розробку штучного інтелекту] (https://aibuzzwire.news), слідкуйте за AI Buzz Wire.

Чому безпека пам'яті важлива зараз

Згідно з власним дослідженням Google, на вразливості безпеки пам’яті припадає приблизно 70% уразливостей кодових баз C і C++. Бібліотеки сторонніх розробників є особливо слабким місцем, оскільки вони регулярно аналізують ненадійні дані. У той же час інтервал між виявленням уразливості та створенням зброї продовжує скорочуватися — зловмисники, яким все більше допомагає сам ШІ, рухаються швидше, ніж традиційні цикли виправлень.

Google давно виступає за стратегію «безпечного кодування», яка надає пріоритет мовам, безпечним для пам’яті, таким як Rust. Невирішеною проблемою є величезна встановлена ​​база залежностей C і C++, яку неможливо просто видалити. Пілот поставив пряме запитання: чи може LLM швидко перетворити ці залежності на Rust, нічого не зламавши?

Ціль: giflib

Google вибрав giflib, широко використовувану бібліотеку обробки зображень GIF, спочатку розроблену Еріком С. Реймондом. Бібліотека пропонувала ідеальний профіль складності для першої спроби: приблизно 3000 рядків коду, без оптимізації SIMD або збірки та стабільна кодова база. Найважливіше те, що giflib часто обробляє ненадійні дані в середовищах без пісочниці — саме те, про що найбільше хвилюються команди безпеки поверхневих атак.

Мета була амбітною: створити безпечну для пам’яті, сумісну з ABI заміну, яку можна було б розгортати в виробничій інфраструктурі Google без збоїв у роботі залежних служб. Початковий переклад логіки бібліотеки було виконано швидко за допомогою LLM, але команда відзначила дві вимоги, які виявилися вирішальними: ретельне керування межами FFI — життєвим циклом вказівника та семантикою власності Rust на інтерфейсі з існуючими абонентами C — і те, що Google називає «соціальним компонентом безпеки», людською довірою, необхідною для розгортання створених штучним інтелектом перезаписів у критичних службах.

Рукавиця перевірки

Щоб завоювати довіру до виробництва, реалізація Rust пройшла вичерпне тестування:

  • Масове регресійне тестування: Перевірено на основі набору даних із понад 30 мільйонів реальних GIF-файлів, підтверджуючи результати, ідентичні оригінальній реалізації
  • Диференціальний фаззінг: Фаззер оригінальний проти іржі працював безперервно понад шість днів і понад 200 мільйонів ітерацій, не знаходячи жодних логічних відхилень.
  • Огляд змагального штучного інтелекту: Спеціалізовані підказки LLM використовувалися для виявлення тонких поведінкових відмінностей між двома кодовими базами, які традиційне тестування могло пропустити.

Трубопровід довів свою цінність перед розгортанням. Він виявив граничний випадок у декодері LZW і — що більш помітно — виявив уже існуючу вразливість поза межами запису, яка була введена внутрішнім застарілим патчем Google для оригінального джерела C, який команда виправила під час переписування Rust.

Продуктивність не постраждала

Загальним запереченням проти мов, безпечних для пам’яті, є вартість перевірки меж виконання. Моніторинг Google у своїх глобальних службах обробки зображень показав, що реалізація Rust була нейтральною щодо продуктивності порівняно з оригіналом C — результат, за словами компанії, який неодноразово спостерігав під час міграції Rust.

Був несподіваний бонус. Оскільки бібліотека Rust за своєю конструкцією безпечна для пам’яті, Google зміг вивести з експлуатації ресурсомістке ізольоване програмне середовище, яке раніше було потрібно деяким виробничим службам для ізоляції бібліотеки C. Таке спрощення архітектури призвело до значного скорочення затримки хвоста для завдань декодування зображень.

Відкритий код — із чесними застереженнями

Google опублікував переробку Rust на github.com/google/giflib-rs і надає свої висновки спільноті. Компанія також віддає перевагу додатковим зусиллям під керівництвом людини, таким як ручне переписування zlib у Rust, зроблене Trifecta Tech Foundation, зі значним підвищенням продуктивності, як частину ширшої екосистеми рішень.

Варто звернути увагу на застереження. Для перезапису потрібні великі обсяги реальних даних або потужні існуючі набори тестів для підтвердження поведінкової еквівалентності, а відхилення від попереднього проекту шляхом зміни мов спричиняє реальні витрати на технічне обслуговування — особливо для залежностей, які активно розробляються. Іншими словами, переклад за допомогою ШІ прискорює, але не замінює інженерну оцінку.

Більша картина

Пілотний проект є однією з найяскравіших демонстрацій того, що LLM можуть забезпечувати структурні покращення безпеки в масштабі, а не лише пропозиції коду. Google стверджує, що завдяки поєднанню швидкості перекладу, керованого LLM, із диференціальним тестуванням і людським експертним оглядом кордонів безпеки, цілі класи вразливостей можна вилучити з виробничої інфраструктури — до того, як хтось дізнається, який конкретний CVE буде наступним.

Джерело: блог Google Bug Hunters, «Scaling Memory Safety: AI-Assisted Rewrites of C/C++ Dependencies to Rust».

---

Будьте попереду ШІ

Отримуйте останні новини штучного інтелекту, аналіз і прориви — усе в одному місці.

Читати більше новин AI →