Команда AI for Devs подготовила перевод статьи о RedCodeAgent — первой полностью автоматизированной системе red-teaming для проверки безопасности кодовых агентов. Исследователи из Чикаго, Оксфорда, Беркли и Microsoft Research показали: даже самые продвинутые LLM-агенты могут генерировать и выполнять уязвимый код. RedCodeAgent не просто тестирует ответы — он атакует, анализирует поведение и находит уязвимости, которые пропускают все остальные методы.
Code agents — это системы на основе искусственного интеллекта, способные генерировать высококачественный код и эффективно взаимодействовать с интерпретаторами кода. Эти возможности упрощают сложные процессы разработки программного обеспечения, что и обусловило их широкое распространение.
Однако вместе с этим прогрессом возникают серьёзные риски в области безопасности. Существующие статические бенчмарки безопасности и методы red-teaming (проверки безопасности, при которых исследователи моделируют реальные атаки, чтобы выявить уязвимости) часто оказываются недостаточными при оценке code agents. Они могут не выявлять новые типы рисков, например, комбинированное воздействие нескольких инструментов для обхода ограничений (jailbreak).
В контексте генерации кода эффективный red-teaming требует большего, чем просто проверка, отклоняет ли агент небезопасные запросы. Агент должен уметь генерировать и выполнять корректный код, реализующий потенциально опасную функциональность. Поэтому при оценке таких систем важно анализировать не только статический код, но и поведение при его исполнении.
Чтобы решить эти проблемы, исследователи из Чикагского университета, Университета Иллинойса в Урбана-Шампейн, VirtueAI, Британского института безопасности ИИ, Оксфордского университета, Калифорнийского университета в Беркли и Microsoft Research предложили RedCodeAgent — первый полностью автоматизированный и адаптивный red-teaming агент, специально разработанный для оценки безопасности code agents, построенных на больших языковых моделях (LLM).
Обширные экспериментальные результаты подтверждают эффективность и производительность RedCodeAgent при тестировании:
разнообразных уязвимостей и типов вредоносного ПО из классификации CWE,
различных языков программирования — включая Python, C, C++ и Java,
широкого спектра code agents, таких как OpenCodeInterpreter, ReAct, MetaGPT, а также коммерческих агентов — например, Cursor и Codeium.
RedCodeAgent также выявляет распространённые уязвимости среди разных агентов (например, генерацию и выполнение небезопасного кода), показывает различия в сложности red-teaming для разных целей, определяет наиболее часто активируемые инструменты атак и находит ранее неизвестные уязвимости, которые остаются незамеченными другими базовыми методами.

Как показано на Рисунке 1, RedCodeAgent оснащён модулем памяти, который накапливает удачные атаки, позволяя системе непрерывно учиться и адаптировать свои стратегии. На основе изучённого опыта RedCodeAgent дополнительно использует специализированный инструментарий, сочетающий типичные средства red-teaming с модулем замены кода (code substitution), что позволяет через вызовы функций моделировать реалистичные и разнообразные атаки, ориентированные непосредственно на код. Опираясь на ответы целевого агента в ходе нескольких интерактивных попыток, RedCodeAgent оптимизирует свои стратегии, систематически проверяя уязвимости в режиме реального времени.
На этапе оценки RedCodeAgent интегрирует симулированные песочницы для выполнения кода и оценки последствий обнаруженного поведения. Такая оценка в песочнице обеспечивает более надёжную проверку вредоносного поведения и устраняет потенциальные смещения предыдущих статических методов, которые полагались исключительно на «LLM как судью».

В Рисунке 2 приведён пример. Изначально RedCodeAgent обнаруживает, что запрос был отклонён, после чего применяет алгоритм Greedy Coordinate Gradient (GCG) для обхода защит. После того как второй запрос также был отклонён целевым агентом, RedCodeAgent вызвал и Code Substitution, и GCG для оптимизации промпта. В итоге RedCodeAgent успешно комбинировал предложение от Code Substitution (например, использование pathlib) с состязательным суффиксом (adversarial suffix), сгенерированным GCG, в результате чего целевой code agent удалил указанный файл.
Выводы из работы RedCodeAgent
Эксперименты на разных бенчмарках показывают, что RedCodeAgent одновременно достигает более высокого показателя успешности атак (ASR) и более низкого уровня отклонений, при этом выявляются несколько ключевых наблюдений, приведённых ниже.
Использование традиционных jailbreak-методов само по себе не обязательно повышает ASR на code agents
Оптимизированные промпты, сгенерированные GCG, AmpleGCG, Advprompter и AutoDAN, не всегда дают более высокий ASR по сравнению со статическими промптами без jailbreak, как видно на Рисунке 3. Это, вероятно, связано с отличием задач, ориентированных на код, от общих задач по генерации вредоносных запросов в контексте безопасности LLM. В задачах, связанных с кодом, недостаточно того, чтобы целевой code agent просто не отклонил запрос; он обязан сгенерировать и выполнить код, который реализует требуемую функцию. Предыдущие jailbreak-методы этого не гарантируют. RedCodeAgent же обеспечивает, чтобы входной промпт имел чёткую функциональную цель (например, удаление конкретных конфиденциальных файлов). RedCodeAgent может динамически подстраиваться по обратной связи от модуля оценки, непрерывно оптимизируя свои действия до достижения поставленных целей.

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

RedCodeAgent обнаруживает новые уязвимости
В сценариях, где другие методы не в состоянии найти успешные стратегии атак, RedCodeAgent выявляет новые, реализуемые подходы обхода ограничений (jailbreak). В количественном выражении мы обнаружили, что RedCodeAgent способен выявить 82 уникальные уязвимости на агенте OpenCodeInterpreter (из 27*30=810 случаев в бенчмарке RedCode-Exec) и 78 — на агенте ReAct. Это случаи, в которых все базовые методы не смогли определить уязвимость, тогда как RedCodeAgent добился успеха.
Русскоязычное сообщество про AI в разработке

Друзья! Эту статью подготовила команда ТГК «AI for Devs» — канала, где мы рассказываем про AI-ассистентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!
Вывод
RedCodeAgent сочетает адаптивную память, специализированные инструменты и симулированные среды исполнения кода, чтобы обнаруживать реальные риски, незаметные для статических бенчмарков. Он последовательно превосходит ведущие методы jailbreak, достигая более высоких показателей успешности атак и более низкого уровня отклонений, оставаясь при этом эффективным и адаптивным в отношении разных агентов и языков программирования.