Google DeepMind представила CodeMender, новый агент, работающий на основе искусственного интеллекта (ИИ), который предназначен для автоматического повышения безопасности кода. Этот прорыв является частью более широкой миссии Google DeepMind по ответственной разработке ИИ на благо человечества.
Публикация о CodeMender была сделана 6 октября 2025 года, а авторами являются Ралука Ада Попа (Raluca Ada Popa) и Фоур Флинн (Four Flynn).
Проблема уязвимостей и роль ИИ
Проблема уязвимостей программного обеспечения известна своей сложностью и затратностью по времени для разработчиков, даже при использовании традиционных автоматизированных методов, таких как фаззинг (fuzzing). ИИ-разработки, такие как Big Sleep и OSS-Fuzz, уже продемонстрировали способность ИИ находить новые уязвимости нулевого дня (zero-day vulnerabilities) в хорошо протестированном программном обеспечении. Поскольку достижения в области обнаружения уязвимостей с помощью ИИ продолжаются, становится все труднее полагаться исключительно на человека для устранения этих проблем.
Комплексный подход CodeMender
CodeMender был разработан для решения этой проблемы путем принятия комплексного подхода к безопасности кода, который является одновременно реактивным и проактивным.
- Реактивный подход: Немедленное исправление новых уязвимостей.
- Проактивный подход: Переписывание и защита существующего кода, что устраняет целые классы уязвимостей.
За шесть месяцев разработки CodeMender уже было внесено 72 исправления безопасности в проекты с открытым исходным кодом, включая некоторые проекты объемом до 4,5 миллионов строк кода. Автоматически создавая и применяя высококачественные патчи безопасности, агент CodeMender, работающий на базе ИИ, позволяет разработчикам сосредоточиться на создании качественного программного обеспечения.
CodeMender в действии: Механизм работы
CodeMender использует возможности «мышления» недавних моделей Gemini Deep Think для создания автономного агента, способного отлаживать и исправлять сложные уязвимости.
Для этого агент CodeMender оснащен надежными инструментами, которые позволяют ему:
- Рассуждать о коде до внесения изменений.
- Автоматически проверять эти изменения, чтобы убедиться в их корректности и отсутствии регрессий.
Несмотря на быстрое улучшение больших языковых моделей (LLM), ошибки в безопасности кода могут быть дорогостоящими. Процесс автоматической проверки CodeMender гарантирует, что изменения кода являются корректными по многим параметрам. Агент предоставляет на рассмотрение человеку только те высококачественные патчи, которые, например, устраняют первопричину проблемы, функционально верны, не вызывают регрессий и соответствуют стилевым рекомендациям.
В рамках исследования были разработаны новые методы и инструменты, позволяющие CodeMender более эффективно рассуждать о коде и проверять изменения:
- Расширенный анализ программ (Advanced program analysis): Разработаны инструменты, основанные на статическом анализе, динамическом анализе, дифференциальном тестировании, фаззинге и SMT-солверах (SMT solvers). Используя эти инструменты для систематического изучения шаблонов кода, потока управления (control flow) и потока данных (data flow), CodeMender может лучше определять первопричины недостатков безопасности и архитектурных слабостей.
- Мультиагентные системы (Multi-agent systems): Разработаны специализированные агенты, позволяющие CodeMender решать конкретные аспекты основной проблемы. Например, CodeMender использует инструмент критики на основе большой языковой модели (LLM-based critique tool), который выделяет различия между исходным и измененным кодом для проверки того, что предлагаемые изменения не вызывают регрессий, и позволяет агенту при необходимости самокорректироваться.
Примеры устранения уязвимостей (Реактивный подход)
Для эффективного исправления уязвимости и предотвращения ее повторного появления CodeMender использует отладчик (debugger), браузер исходного кода и другие инструменты для точного определения первопричин и разработки патчей.
Пример 1: Идентификация первопричины. В одном из примеров, даже если конечный патч изменял всего несколько строк кода, первопричина уязвимости не была сразу очевидна. Отчет о сбое показал переполнение буфера кучи (heap buffer overflow), но фактическая проблема заключалась в другом — в неправильном управлении стеком элементов Extensible Markup Language (XML) во время парсинга.
Пример 2: Создание нетривиальных патчей. В другом примере агент CodeMender смог создать нетривиальный патч, который справился со сложной проблемой времени жизни объекта (complex object lifetime issue). Агент не только определил первопричину уязвимости, но и смог модифицировать полностью кастомную систему генерации кода C внутри проекта.
Проактивное повышение безопасности кода
CodeMender также разработан для проактивного переписывания существующего кода с целью использования более безопасных структур данных и API.
В качестве примера, CodeMender был развернут для применения аннотаций -fbounds-safety к частям широко используемой библиотеки сжатия изображений libwebp. При применении этих аннотаций компилятор добавляет проверки границ (bounds checks) в код. Это предотвращает возможность использования злоумышленником переполнения или недополнения буфера (buffer overflow or underflow) для выполнения произвольного кода.
Несколько лет назад уязвимость переполнения буфера кучи в libwebp (CVE-2023-4863) была использована злоумышленником в рамках эксплойта iOS с нулевым кликом (zero-click iOS exploit). Благодаря аннотациям -fbounds-safety, эта уязвимость, наряду с большинством других переполнений буфера в проекте, где были применены аннотации, была бы навсегда сделана непригодной для эксплуатации.
CodeMender также демонстрирует способность автоматически исправлять новые ошибки и любые сбои тестов, возникающие в результате его собственных аннотаций. Агент может самокорректироваться, например, после обнаружения сбоя инструментом LLM-судьи (LLM judge tool), настроенным на функциональную эквивалентность, который проверяет целостность функциональности после модификации функции.
Ответственность и будущее развитие
Хотя ранние результаты работы CodeMender многообещающие, Google DeepMind придерживается осторожного подхода, уделяя особое внимание надежности. В настоящее время все патчи, сгенерированные CodeMender, проверяются исследователями-людьми, прежде чем они отправляются для включения в проекты.
Google DeepMind постепенно наращивает этот процесс, чтобы обеспечить качество и систематически учитывать отзывы сообщества открытого исходного кода. В ближайшие месяцы планируется поделиться рядом методов и результатов в виде технических статей и отчетов.
Цель состоит в том, чтобы, основываясь на обратной связи, выпустить CodeMender в качестве инструмента, который может использоваться всеми разработчиками для поддержания безопасности их кодовых баз.
Экосистема Google DeepMind
Разработка CodeMender вписывается в более широкий контекст моделей и проектов Google DeepMind, направленных на научные открытия и ответственное построение ИИ.
Наиболее интеллектуальные модели ИИ (Gemini):
- 2.5 Pro
- 2.5 Flash
- 2.5 Flash Image
- 2.5 Flash-Lite
Легкие, современные открытые модели (Gemma):
- Gemma 3
- Gemma 3n
- ShieldGemma 2
Генеративные модели (изображение, музыка и видео):
- Imagen
- Lyria
- Veo
Модели и эксперименты, созданные с помощью Gemini (Gemini model ecosystem):
- Gemini Robotics
- Project Astra
- Project Mariner
- Gemini Diffusion
ИИ для биологии (AI for biology):
- AlphaFold
- AlphaGenome
- AlphaMissense
- AlphaProteo
ИИ для климата и устойчивого развития (AI for climate and sustainability):
- WeatherNext
- Weather Lab
ИИ для математики и информатики (AI for mathematics and computer science):
- AlphaEvolve
- AlphaProof
- AlphaGeometry
ИИ для физики и химии (AI for physics and chemistry):
- GNoME
- Fusion
- AlphaQubit
Прозрачность ИИ (AI transparency):
- SynthID
Google DeepMind подчеркивает свою приверженность ответственности, обеспечивая безопасность ИИ посредством проактивной защиты, даже от развивающихся угроз.