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-файлов, что подтверждает, что результаты идентичны исходной реализации.
- Дифференциальный фаззинг: оригинальный фаззинг по сравнению с Rust работал непрерывно более шести дней и выполнил более 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, «Масштабирование безопасности памяти: переписывание зависимостей C/C++ на Rust с помощью ИИ».
---
Будьте впереди ИИПолучайте последние новости, анализ и открытия в области искусственного интеллекта — все в одном месте.
Подробнее новости AI →