qvib.pro
EN

17.06.2026 · Безопасность

Что случилось

В середине июня 2026 исследователи из Tenet Security (команда Threat Labs) раскрыли новый класс атак на ИИ-агентов — Agentjacking («угон агента»). Суть: поддельный баг-репорт, отправленный в сервис мониторинга ошибок Sentry, заставляет кодинг-агента вроде Claude Code или Cursor выполнить произвольный код прямо на машине разработчика.

Как это работает по шагам:

  1. У Sentry есть публичный ключ DSN — он по задумке встроен прямо во фронтенд-JavaScript и виден любому. Это write-only credential: с ним можно только слать события об ошибках.
  2. Атакующий POST-запросом отправляет в приёмный эндпоинт Sentry поддельное событие об ошибке. Внутри — аккуратно сформированный markdown, визуально неотличимый от штатных «шагов по устранению» (remediation guidance) самого Sentry.
  3. Разработчик в обычном рабочем потоке просит агента: «почини нерешённые ошибки в Sentry».
  4. Агент подтягивает событие через MCP (Model Context Protocol) и читает вредоносную инструкцию как доверенное указание.
  5. Агент выполняет команду атакующего — например, ставит подконтрольный npm-пакет — с правами разработчика.

По данным Tenet, используя только публичные API Sentry и ничего не взламывая, исследователи нашли 2388 организаций с уязвимыми DSN. В контролируемых тестах агенты более чем в 100 организациях — от Fortune 500 до независимых разработчиков — реально выполнили инъектированный код. Заявленный успех эксплуатации — 85% против ведущих ИИ-ассистентов (Claude Code, Cursor, Codex).

Что может утечь: переменные окружения (ключи AWS, токены GitHub и Sentry), git-креды, адреса приватных репозиториев, идентификаторы разработчика — всё тихо, на сервер атакующего.

Sentry, по данным The Hacker News, проблему признал, но полноценно чинить отказался: добавил лишь глобальный контент-фильтр, блокирующий конкретную строку полезной нагрузки. Tenet в ответ выложил в опенсорс набор готовых конфигов agent-jackstop, укрепляющих Cursor и Claude Code против этого класса инъекций.

Почему это важно

Главная опасность в том, что каждый шаг атаки — авторизованный. Нет фишинга, нет взлома чужого сервера, нет действий пользователя сверх обычного рабочего потока. EDR, WAF, IAM, VPN и файрволы не видят ничего подозрительного: вредонос запускает доверенное приложение (сам агент) от имени разработчика, на машинной скорости.

Это классическая prompt injection, но с новым вектором доставки: не через веб-страницу или письмо, а через легитимный инструмент мониторинга, которому команда доверяет. Агент не умеет отличить настоящую диагностику от markdown-инъекции — для него и то и другое просто «данные из Sentry».

И проблема не только в Sentry. VentureBeat указывает, что тот же принцип применим к Datadog, PagerDuty и Jira — к любому источнику, который скармливает агенту недоверенные внешние данные через MCP. То есть Agentjacking — это не баг одного вендора, а системная дыра в том, как агенты потребляют внешний контекст.

Что это значит для вайб-кодинга

Если вы даёте агенту доступ к интеграциям (Sentry, трекеры задач, мониторинг) — вы фактически расширяете поверхность атаки на весь внешний контент, который туда попадает. Практические выводы:

  • Не давайте агенту автозапуск команд там, где он читает недоверенные данные. Держите подтверждение перед выполнением shell-команд и установкой пакетов.
  • Относитесь к содержимому баг-репортов, тикетов и алертов как к недоверенному вводу — даже если источник «свой». Инъекция прилетает именно через контент, а не через взлом.
  • Изолируйте среду: запускайте агента в песочнице/контейнере с минимумом секретов в переменных окружения, отдельными токенами и ограниченными правами на репозитории.
  • Проверьте свои DSN: публичный ключ Sentry по определению открыт, но именно поэтому поток «агент чинит ошибки из Sentry» стоит гейтить ревью человека.
  • Посмотрите опенсорс-конфиги agent-jackstop от Tenet как стартовую защиту для Cursor и Claude Code.

Agentjacking — наглядное напоминание: удобство «агент сам сходит и починит» оборачивается тем, что любой, кто может положить строку в ваш пайплайн данных, потенциально может положить команду в ваш терминал.

Источники