fedorthinks
Все заметки

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. Это чистая демонстрация: агент, который читает недоверенный текст и выполняет команды, в одном подброшенном сообщении от того, чтобы работать на атакующего.

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

Комментарии

Пока нет комментариев

Войдите, чтобы участвовать в разговоре.

Будьте первым, кто оставит мысль.