Оглавление

Исследователи из Microsoft Research совместно с учеными из нескольких университетов разработали первый полностью автоматизированный агент для тестирования безопасности ИИ-систем, генерирующих код. RedCodeAgent способен находить уязвимости в таких популярных решениях, как OpenCodeInterpreter, ReAct, MetaGPT и коммерческих продуктах вроде Cursor и Codeium.

Проблема безопасности кодовых ассистентов

Кодовые агенты на базе больших языковых моделей стали неотъемлемой частью современных процессов разработки программного обеспечения. Однако их широкое внедрение сопровождается серьезными рисками безопасности. Существующие методы тестирования, включая статические бенчмарки и ручное тестирование, часто не справляются с выявлением реальных угроз.

Главная проблема заключается в том, что для эффективной оценки безопасности недостаточно просто проверить, отклонит ли агент опасный запрос. Необходимо убедиться, что система не только генерирует, но и исполняет корректный код, выполняющий целевые вредоносные функции.

Архитектура RedCodeAgent

Новый инструмент представляет собой комплексную систему, состоящую из нескольких ключевых компонентов:

  • Модуль памяти — накапливает успешный опыт атак, позволяя системе постоянно обучаться и адаптировать стратегии
  • Специализированный инструментарий — комбинирует репрезентативные инструменты тестирования с модулем подстановки кода
  • Среда исполнения — интегрирует симуляцию песочницы для оценки реального воздействия сгенерированного кода

В процессе оценки RedCodeAgent использует симулированные песочницы для исполнения кода и анализа результирующего поведения. Этот подход обеспечивает более надежную оценку вредоносных действий и устраняет потенциальные смещения предыдущих статических методов, полагающихся исключительно на оценку «LLM-как-судьи».

Практическое применение

Как показано на схеме, RedCodeAgent демонстрирует адаптивное поведение в реальных сценариях. В одном из кейсов система обнаружила, что первоначальный запрос был отклонен, после чего использовала алгоритм Greedy Coordinate Gradient для обхода защитных механизмов. После повторного отказа кодового агента RedCodeAgent задействовала одновременно подстановку кода и GCG для оптимизации промпта.

Блок-схема рабочего процесса RedCodeAgent с автоматическим тестированием на проникновение для кодовых агентов
Источник: www.microsoft.com

В итоге система успешно объединила предложение от модуля подстановки кода (использование pathlib) с адверсариальным суффиксом, сгенерированным GCG, заставив целевой кодовый агент удалить указанный файл.

Ирония ситуации в том, что мы создаем ИИ для взлома других ИИ — это напоминает цифровую версию вечных гонок вооружений. RedCodeAgent показывает, что традиционные методы взлома не всегда работают против кодовых агентов, поскольку здесь недостаточно просто обойти защиту — нужно заставить систему выполнить конкретную вредоносную функцию. Это меняет правила игры в области безопасности ИИ.

Ключевые открытия

Эксперименты на разнообразных бенчмарках показали, что RedCodeAgent достигает более высокого уровня успешности атак при меньшем проценте отказов.

Ограниченная эффективность традиционных методов взлома

Оптимизированные промпты, сгенерированные GCG, AmpleGCG, Advprompter и AutoDAN, не всегда обеспечивают более высокий ASR по сравнению со статическими промптами без взлома. Это связано с фундаментальным различием между задачами безопасности для кода и общими вредоносными запросами в LLM.

Блок-схема кейса: RedCodeAgent успешно атакует целевой кодовый агент
Источник: www.microsoft.com

Адаптивное использование инструментов

RedCodeAgent динамически настраивает использование инструментов в зависимости от сложности задачи. На графике видно, что комбинации вызовов инструментов различаются для разных задач. Для простых задач, где базовые статические тест-кейсы уже достигают высокого ASR, система тратит минимум времени на вызов дополнительных инструментов, демонстрируя свою эффективность.

Точечная диаграмма сравнения успешности атак и временных затрат методов Red Teaming
Источник: www.microsoft.com

Для более сложных задач, где базовые статические тест-кейсы в RedCode-Exec показывают более низкий ASR, система тратит больше времени на использование продвинутых инструментов вроде GCG и Advprompter для оптимизации промпта и успешной атаки.

Многоязычная поддержка и обнаружение уязвимостей

Система успешно тестировала кодовые агенты на нескольких языках программирования, включая Python, C, C++ и Java. RedCodeAgent также обнаружила общие уязвимости среди различных агентов, такие как генерация и исполнение небезопасного кода, выявила вариации в сложности тестирования для разных целей и определила часто используемые инструменты атак.

Наиболее значительным достижением стало обнаружение ранее неизвестных уязвимостей, которые все другие базовые методы пропустили.

По материалам Microsoft Research.