Защита кодовой базы с помощью автономных агентов

За последние девять месяцев скорость создания PR у нас выросла в 5 раз. Инструменты безопасности на базе статического анализа или жёсткого распределения ответственности за код по-прежнему полезны. Но на этом масштабе их уже недостаточно. Мы адаптировались, начав использовать Cursor Automations — это позволило быстро собрать набор security-агентов, которые непрерывно находят и устраняют уязвимости в кодовой базе.

Security agents are reviewing 3,000+ internal PRs each week, catching 200+ vulnerabilities

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

Архитектура автоматизаций

Чтобы агенты были полезны в контексте безопасности, им нужны две вещи — обе есть в Cursor Automations.

Первая — готовые интеграции для приёма webhooks (веб-хуков, HTTP-уведомлений о событиях), ответов на GitHub pull request и отслеживания изменений в кодовой базе. Это позволяет фоновым агентам понимать, когда нужно вмешаться и выполнить действие.

Вторая — полноценная среда выполнения агентов. Автоматизации работают на базе cloud agents (облачных агентов Cursor), поэтому имеют доступ ко всем инструментам, навыкам и возможностям наблюдения, доступным облачным агентам.

Чтобы сделать автоматизации ещё мощнее для security-задач, мы собрали security MCP-инструмент (MCP — протокол взаимодействия агента с внешними инструментами) и развернули его как serverless Lambda-функцию — она запускается по требованию и не потребляет ресурсы в остальное время.

MCP, референсный код которого доступен здесь, решает три задачи:

  1. Хранение данных. Агент использует MCP для сохранения данных. Это позволяет отслеживать и измерять влияние на безопасность во времени. Эти данные помогают непрерывно уточнять, когда и как запускать автоматизации.
  2. Дедупликация. Мы запускаем несколько review-агентов на каждое изменение. Поскольку их выводы генерирует LLM, разные агенты могут описывать одну и ту же проблему разными словами. Чтобы избежать дублирования работы, MCP позволяет агенту запустить классификатор на базе Gemini Flash 2.5. Он определяет, когда два разных по формулировке описания относятся к одной проблеме.
  3. Единообразный вывод. Агенты передают все найденные уязвимости через MCP. MCP отправляет отформатированные сообщения в Slack и обрабатывает дальнейшие действия — отклонение или откладывание (snooze) находки.

На этом фундаменте строятся четыре описанные ниже автоматизации, каждая со своим workflows и логикой триггеров. Все изменения в security-инструментах проходят стандартный процесс review и деплоя через Terraform.

Agentic Security Review

Внутри мы уже использовали Bugbot для review PR на качество кода и общие проблемы, включая некоторые security-находки. Но универсальный инструмент не идеален для безопасности: его нельзя настроить под нашу конкретную threat model (модель угроз — перечень возможных векторов атак). А нам была нужна возможность блокировать CI именно по security-находкам, не блокируя при этом каждый общий комментарий по качеству кода.

Поэтому мы собрали отдельную автоматизацию — Agentic Security Review. Сначала мы направляли её находки в приватный Slack-канал, за которым следила security-команда.

Slack channel showing security findings from Agentic Security Review

Agentic Security Review отправляет находки в приватный Slack-канал, за которым следит security-команда.

Убедившись, что инструмент выявляет реальные проблемы, мы включили комментирование PR, а затем реализовали блокирующий gate check (проверку-заградитель, которая останавливает пайплайн при обнаружении проблемы). За последние два месяца Agentic Security Review обработал тысячи PR и не допустил в прод сотни проблем.

Vuln Hunter

После успеха Agentic Security Review на новом коде мы направили агентов на существующую кодовую базу. Vuln Hunter — автоматизация, которая разбивает код на логические сегменты и ищет в каждом уязвимости. Команда выполняет триаж (сортировку и оценку) находок и обычно исправляет их, часто используя @Cursor из Slack для генерации PR.

Anybump

Патчинг зависимостей настолько трудоёмок, что большинство security-команд в итоге сдаются и перекладывают задачу на инженеров, где она тонет в бэклогах. Мы создали автоматизацию Anybump, которая почти полностью автоматизировала этот процесс.

Anybump выполняет reachability analysis (анализ достижимости — проверяет, вызывается ли уязвимый код из реальных путей выполнения). Это сужает список уязвимостей до реально влияющих. Затем автоматизация проходит по соответствующим путям кода, запускает тесты, проверяет на поломки и открывает PR после прохождения тестов. После мержа PR canary deployment pipeline (канареечный пайплайн — механизм постепенного развёртывания на часть трафика) Cursor предоставляет финальный safety gate перед попаданием чего-либо в прод.

GitHub pull request opened by Anybump to patch a vulnerable dependency

Anybump автоматически открывает PR для патча уязвимых зависимостей после прохождения тестов.

Invariant Sentinel

Invariant Sentinel запускается ежедневно и отслеживает drift (отклонения) относительно набора security- и compliance-свойств (требований нормативных стандартов). Он разбивает репозиторий на логические сегменты и запускает субагентов для валидации кода по списку инвариантов (правил, которые должны оставаться неизменными).

После анализа агент сравнивает текущее состояние с предыдущими запусками, используя функцию памяти автоматизаций. При обнаружении drift он повторно валидирует, чтобы убедиться в корректности. Затем обновляет память и отправляет в Slack отчёт security-команде с описанием изменения и конкретными locations в коде в качестве доказательств.

Эта автоматизация работает в полноценной среде разработки. Поэтому агент может писать и выполнять код для валидации собственных предположений — дополняя традиционные функциональные, unit и integration тесты.

Дальнейшие планы

В безопасности полно возможностей для применения автоматизаций, и эти четыре — только начало. Мы уже расширяем их на приём отчётов об уязвимостях, мониторинг privacy compliance, триаж on-call алертов и provisionинг доступа (предоставление и управление правами доступа).

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