SECURITY · 23 июня 2026 г.
Фейковый баг-репорт угнал кодинг-агента
Исследователи показали новую атаку «Agentjacking»: отправь фейковую ошибку в Sentry компании — и её ИИ-агент для кода читает «шаги по исправлению» и выполняет их, отдавая атакующему твои креды с твоими же привилегиями. В тестах на это попались Claude Code, Cursor и Codex. Урок шире одного инструмента: всё недоверенное, что читает твой агент, — это место, куда можно вставить команды.
Вот атака, которая должна изменить твоё отношение к агентам. Исследователи Tenet Security раскрыли «Agentjacking» — и The Hacker News написал о ней в этом месяце. Схема почти до неприличия простая: атакующий отправляет фейковый баг-репорт в Sentry компании (инструмент трекинга ошибок), используя лишь публичный ключ, который легко найти. В фейковой ошибке есть «шаги по исправлению». Когда ИИ-агент команды читает ошибку, чтобы помочь починить, он выполняет эти шаги — а это на самом деле команды атакующего — на машине разработчика, с его же привилегиями.
В тестах на это попались Claude Code, Cursor и Codex. Они не смогли отличить настоящую ошибку от подброшенной. Добыча атакующего: переменные окружения, ключи AWS, токены npm, git-креды, URL приватных репозиториев. Tenet нашли 2388 организаций с открытыми, инъецируемыми ключами.
Твои guardrails это не поймали
Самое страшное — что не остановило атаку. По данным исследования, EDR, WAF, IAM, VPN, Cloudflare — и даже явная инструкция в системном промпте не доверять внешним данным — всё это не заблокировало её. А Sentry, когда их попросили починить на уровне платформы, назвали проблему «технически незащитимой».
Сказать модели «не доверяй внешним данным» — это не мера безопасности. Это пожелание, которое модель вольна проигнорировать.
Вот неудобная правда, которую вскрывает эта атака: промптом до безопасности не дойдёшь. Если агент может читать текст под контролем атакующего и выполнять команды, то инструкции в промпте между этим — не стена.
Настоящий урок: каждый вход — это поверхность инъекции
Хочется списать это на «баг Sentry». Это не так. Трекер ошибок — лишь дверь. Паттерн общий: всё, что читает твой агент и на что может повлиять чужак, — это место для вставки команд — логи ошибок, тикеты поддержки, комментарии в задачах, веб-страницы, которые он смотрит, вывод другого инструмента, описание MCP-сервера. Я писал об этом с других сторон — веб-страница может отдавать твоему агенту команды — и Agentjacking — тот же урок с новой дверью.
Что реально защищает
Это чинится не лучшим промптом. Это чинится архитектурой:
- Отдели чтение от действия. Часть агента, которая глотает недоверенный текст, не должна быть той частью, что умеет выполнять команды. Поставь между ними настоящую границу.
- Песочница для исполнения. Гоняй команды агента в изолированной среде без доступа к реальным кредам, облачным ключам и секретам твоего репозитория. Угонят — не получат ничего.
- Минимум привилегий, всегда. Агент должен дотягиваться только до того, что нужно задаче. Большая часть добычи в этой атаке — креды, которые агенту вообще незачем было видеть.
- Человек одобряет всё, что выполняется или отправляется. Чтение дёшево; исполнение и эксфильтрация — вот где ставишь гейт.
Итог
Agentjacking — это не про Sentry. Это чистая демонстрация: агент, который читает недоверенный текст и выполняет команды, в одном подброшенном сообщении от того, чтобы работать на атакующего.
Считай каждый вход агента враждебным, отдели «чтение» от «исполнения» и песочь то, что он запускает, — потому что от инъекции промптом не уйти. Дверь будет меняться. Решение — граница, которую ты поставишь за ней.
Комментарии
Пока нет комментариев
Войдите, чтобы участвовать в разговоре.
Будьте первым, кто оставит мысль.