Google DeepMind представляет CodeMender — ИИ-агент, который использует Gemini Deep Think для автоматического устранения критических уязвимостей в программном обеспечении.
ИИ-агент может:
* локализовать первопричину;
* доказать правильность предложенного исправления с помощью автоматизированного анализа и тестирования;
* превентивно переписать соответствующий код, чтобы устранить целый класс уязвимостей;
* открыть апстрим-патч для проверки.
Что такое CodeMender?
CodeMender — это инструмент, который генерирует, проверяет и отправляет исправления для реальных уязвимостей, используя возможности Gemini Deep Think и дополненный инструментами рабочий процесс.
За шесть месяцев внутреннего развёртывания CodeMender внёс 72 исправления в области безопасности в проектах с открытым исходным кодом, включая кодовые базы объёмом до ~4,5 млн строк. Он предназначен для работы как в реактивном режиме (исправление известных проблем), так и в проактивном (переписывание кода для устранения классов уязвимостей).
Архитектура
Агент сочетает в себе крупномасштабный анализ кода с инструментами анализа программ: статический и динамический анализ, дифференциальное тестирование, фаззинг и решатели задач выполнимости в теории (SMT). Многоагентская архитектура включает специализированных рецензентов, которые проверяют семантические различия и запускают самокоррекцию при обнаружении регрессий. Эти компоненты позволяют системе локализовать первопричины, синтезировать предлагаемые исправления и автоматически тестировать изменения перед их представлением на рассмотрение человека.
Валидация и участие человека
DeepMind подчёркивает важность автоматической валидации перед тем, как кто-либо из людей приступит к работе с патчем. Система проверяет устранение первопричин, функциональную корректность, отсутствие регрессий и соответствие стилю. Только исправления с высоким уровнем достоверности предлагаются для рассмотрения сопровождающими лицами.
Проактивное упрочнение: защита на уровне компилятора
Помимо исправления, CodeMender применяет преобразования для повышения безопасности на уровне кода. Например, автоматическая вставка аннотаций Clang’s -fbounds-safety в libwebp для принудительного выполнения проверок границ на уровне компилятора — подход, который нейтрализовал бы переполнение кучи в libwebp в 2023 году (CVE-2023-4863), использованное в цепочке атак на iOS без кликов.
Примеры
DeepMind подробно описывает два нетривиальных исправления:
1. Сбой, первоначально идентифицированный как переполнение кучи, связанный с неправильным управлением стеком XML;
2. Ошибка времени жизни, требующая редактирования пользовательского генератора кода на C.
В обоих случаях исправления, предложенные агентом, прошли автоматизированный анализ и проверку LLM на функциональную эквивалентность перед представлением.
Контекст развёртывания и связанные инициативы
Google представляет CodeMender как часть защитного стека, который включает в себя новую программу вознаграждения за уязвимости, связанные с ИИ (объединение связанных с ИИ наград), и Secure AI Framework 2.0 для обеспечения безопасности агентов.
Комментарии
CodeMender использует Gemini Deep Think в сочетании с инструментами анализа программ (статический/динамический анализ, фаззинг, SMT) для локализации первопричин и предложения исправлений, которые проходят автоматическую проверку перед рассмотрением человеком. Сообщается, что за шесть месяцев было внесено 72 исправления в области безопасности в проектах с открытым исходным кодом, включая кодовые базы объёмом около 4,5 млн строк.
Система также применяет проактивное упрочнение (например, принудительное выполнение проверок границ с помощью Clang -fbounds-safety) для уменьшения количества ошибок, связанных с безопасностью памяти, а не только для исправления отдельных экземпляров.
Пока не опубликованы данные о задержках или пропускной способности, поэтому влияние лучше всего измерять по количеству проверенных исправлений и объёму упрочнённого кода.
1. Какие функции ИИ-агента CodeMender позволяют ему автоматически устранять уязвимости в программном обеспечении?
CodeMender обладает несколькими функциями для автоматического устранения уязвимостей:
* локализация первопричины уязвимости;
* доказательство правильности предложенного исправления с помощью автоматизированного анализа и тестирования;
* превентивное переписывание кода для устранения целого класса уязвимостей;
* открытие апстрим-патча для проверки.
2. Какие методы анализа и тестирования используются CodeMender для проверки исправлений?
Для проверки исправлений CodeMender использует:
* статический и динамический анализ;
* дифференциальное тестирование;
* фаззинг;
* решатели задач выполнимости в теории (SMT).
3. В каких режимах может работать CodeMender и какие задачи он может решать в каждом из них?
CodeMender может работать в двух режимах:
* реактивный режим — исправление известных проблем;
* проактивный режим — переписывание кода для устранения классов уязвимостей.
4. Какие примеры исправлений, предложенных CodeMender, описаны в статье?
В статье описаны два примера исправлений, предложенных CodeMender:
* сбой, первоначально идентифицированный как переполнение кучи, связанный с неправильным управлением стеком XML;
* ошибка времени жизни, требующая редактирования пользовательского генератора кода на C.
5. Как CodeMender обеспечивает безопасность на уровне компилятора?
CodeMender применяет преобразования для повышения безопасности на уровне кода, например, автоматическую вставку аннотаций Clang’s -fbounds-safety в libwebp для принудительного выполнения проверок границ на уровне компилятора. Это позволяет нейтрализовать уязвимости, такие как переполнение кучи в libwebp в 2023 году (CVE-2023-4863), использованное в цепочке атак на iOS без кликов.