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

«ИИ-агенты для написания кода могут создавать рабочий софт с невероятной скоростью, но безопасность не является частью их стандартного мышления», — заявил Джеймс Уикетт, генеральный директор DryRun Security. «В нашем опыте использования ИИ-агенты часто пропускали добавление компонентов безопасности или создавали логические ошибки в аутентификации. Именно на этих ошибках и пробелах выигрывают злоумышленники».
Исследователи поручили трём агентам — Claude Code с Sonnet 4.6, OpenAI Codex GPT 5.2 и Google Gemini с 2.5 Pro — создать с нуля два приложения, используя стандартный итеративный рабочий процесс. Каждый агент разрабатывал функции через пул-реквесты, и исследователи сканировали каждый PR при его отправке. В ходе 38 сканирований, охвативших 30 пул-реквестов, агенты создали 143 проблемы с безопасностью. Двадцать шесть из этих 30 PR содержали как минимум одну уязвимость, что составляет 87 процентов.
Первое приложение, FaMerAgen, было веб-приложением для отслеживания детских аллергий и контактов семьи. Второе, Road Fury, — браузерной гоночной игрой с backend API, системой рекордов и многопользовательским функционалом. Ни одно из них не было искусственным тестом на безопасность. Оба были построены на основе реалистичных спецификаций продукта без добавления инструкций по безопасности в промпты.
Каждый пул-реквест проверялся агентом анализа кода DryRun в момент отправки, а полное сканирование кодовой базы проводилось до начала разработки и снова после слияния всех функций.
Базовое сканирование игрового приложения не выявило проблем. После добавления всех функций итоговые проверки обнаружили восемь проблем в версии Claude, семь в версии Gemini и шесть в версии Codex. Базовое сканирование веб-приложения выявило девять проблем; итоговые показатели составили 13 для Claude, 11 для Gemini и восемь для Codex.
Десять категорий уязвимостей появлялись достаточно последовательно у разных агентов и в разных задачах, чтобы в отчёте их можно было считать структурными паттернами. Нарушенный контроль доступа был самым распространённым, встречаясь у всех трёх агентов в обоих приложениях. Основной формой этого были неаутентифицированные конечные точки для деструктивных и чувствительных операций.
В игровом приложении у всех трех агентов были обнаружены сбои бизнес-логики. Очки, балансы и состояния разблокировки принимались от клиента без проверки на стороне сервера.
В веб-приложении у всех трех агентов были выявлены недостатки в реализации OAuth. В каждой реализации социального входа отсутствовали параметры состояния и присутствовала небезопасная привязка аккаунтов.
Аутентификация WebSocket отсутствовала в каждой финальной кодовой базе игры. Агенты правильно создавали промежуточное ПО для аутентификации REST, но не подключали его к обработчику обновления WebSocket. Этот недостаток был обнаружен в каждом финальном сканировании, независимо от того, какой агент писал код.
Ограничение частоты запросов было постоянным пробелом. В отчете отмечается, что промежуточное ПО для ограничения частоты было определено в каждой кодовой базе, но ни один агент не подключил его к приложению.
Управление секретами JWT было слабым у всех трех агентов в игровом приложении. Жестко заданные резервные секреты означают, что злоумышленник может подделывать действительные токены без получения учетных данных.
В веб-приложении Codex показал наименьшее количество оставшихся уязвимостей в финальном сканировании, завершив с восемью проблемами, что на одну меньше базового уровня. В его финальной кодовой базе сохранился обход временного токена. Claude завершил с 13 проблемами и внедрил обход отключения двухфакторной аутентификации, не найденный в работе других агентов. Gemini сохранил проблемы с CSRF в OAuth и обходом приглашений до финального сканирования.
В игровом приложении Codex снова показал самый чистый финальный результат — шесть проблем, с пробелами в отзыве JWT и ограничении частоты запросов. Gemini внес наибольшее количество проблем в целом и завершил с наибольшим количеством критических находок. Claude пронес небезопасную прямую ссылку на объект из PR 2 и неаутентифицированный разрушительный конечный пункт из PR 1 до конца проекта, что стало самыми долгоживущими нерешенными проблемами среди всех агентов в исследовании.
PR 3 в игровом приложении, который добавлял вход игрока и систему сохранения игры, был самой рискованной задачей для всех трех агентов. Он привнес наибольший кластер проблем, включая секреты JWT, перечисление пользователей, сбои управления сеансами и проблемы доверия на стороне клиента. Большинство критических находок в финальных сканированиях игры были связаны с проектными решениями, принятыми во время этой задачи.
Многие уязвимости, обнаруженные в исследовании, были связаны с логическими ошибками и недостатками авторизации. Инструменты статического анализа на основе регулярных выражений отмечают известные опасные вызовы функций и строковые шаблоны. Они не отслеживают, подключено ли промежуточное ПО, применяются ли политики аутентификации ко всем типам соединений или происходит ли проверка стоимости разблокировки на сервере. DryRun отмечает в своём Отчёте о точности SAST за 2025 год, что их инструмент контекстного анализа выявил 88 процентов внедрённых уязвимостей в четырёх стеках приложений, причём наибольший разрыв в эффективности был именно на логических ошибках.
Исследователи выделяют пять практик для команд, использующих агенты написания кода. Сканируйте каждый запрос на слияние, а не только финальную сборку, поскольку риски накапливаются между функциями. Проводите проверку безопасности на этапе планирования, а не только во время написания кода, так как многие проблемы в исследовании возникли из-за проектных решений, которые агенты затем реализовали. Используйте контекстный анализ безопасности, способный анализировать потоки данных и границы доверия. Сочетайте проверку запросов на слияние с полным анализом кодовой базы, поскольку каждый метод выявляет разные классы проблем. И проверяйте наличие повторяющихся проблем, обнаруженных в этом исследовании, а именно: небезопасные настройки JWT и управления состоянием, отсутствие защиты от перебора и ограничения частоты запросов, а также невозможность отзыва токенов обновления, поскольку эти проблемы встречались у нескольких агентов и в разных кодовых базах.

Вебинар: Реальное состояние безопасности 2026