# Фейковый баг-репорт угнал кодинг-агента

Исследователи показали новую атаку «Agentjacking»: отправь фейковую ошибку в Sentry компании — и её ИИ-агент для кода читает «шаги по исправлению» и выполняет их, отдавая атакующему твои креды с твоими же привилегиями. В тестах на это попались Claude Code, Cursor и Codex. Урок шире одного инструмента: всё недоверенное, что читает твой агент, — это место, куда можно вставить команды.

- **Author:** Фёдор Чищин
- **Published:** 2026-06-23
- **Tags:** security, agents
- **Source:** https://fedorthinks.com/ru/blog/a-fake-bug-report-hijacked-the-agent

---

Вот атака, которая должна изменить твоё отношение к агентам. Исследователи Tenet Security раскрыли
**«Agentjacking»** — и [The Hacker News написал о ней](https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html)
в этом месяце. Схема почти до неприличия простая: атакующий отправляет **фейковый баг-репорт** в Sentry
компании (инструмент трекинга ошибок), используя лишь публичный ключ, который легко найти. В фейковой ошибке
есть «шаги по исправлению». Когда ИИ-агент команды читает ошибку, чтобы помочь починить, он выполняет эти
шаги — а это на самом деле команды атакующего — на машине разработчика, с его же привилегиями.

В тестах [на это попались Claude Code, Cursor и Codex](https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/).
Они не смогли отличить настоящую ошибку от подброшенной. Добыча атакующего: переменные окружения, ключи AWS,
токены npm, git-креды, URL приватных репозиториев. Tenet нашли **2388 организаций** с открытыми, инъецируемыми
ключами.

## Твои guardrails это не поймали

Самое страшное — что _не_ остановило атаку. По данным исследования, EDR, WAF, IAM, VPN, Cloudflare — и даже
явная инструкция в системном промпте не доверять внешним данным — всё это не заблокировало её. А Sentry, когда
их попросили починить на уровне платформы, [назвали проблему](https://www.mallory.ai/stories/019ebbf0-cfe8-748c-bb06-d3a80fc817e5)
**«технически незащитимой».**

> Сказать модели «не доверяй внешним данным» — это не мера безопасности. Это пожелание, которое модель вольна
> проигнорировать.

Вот неудобная правда, которую вскрывает эта атака: промптом до безопасности не дойдёшь. Если агент может читать
текст под контролем атакующего _и_ выполнять команды, то инструкции в промпте между этим — не стена.

## Настоящий урок: каждый вход — это поверхность инъекции

Хочется списать это на «баг Sentry». Это не так. Трекер ошибок — лишь дверь. Паттерн общий: **всё, что читает
твой агент и на что может повлиять чужак, — это место для вставки команд** — логи ошибок, тикеты поддержки,
комментарии в задачах, веб-страницы, которые он смотрит, вывод другого инструмента, описание MCP-сервера. Я
писал об этом с других сторон — [веб-страница может отдавать твоему агенту команды](/ru/blog/the-webpage-can-give-your-agent-orders)
— и Agentjacking — тот же урок с новой дверью.

## Что реально защищает

Это чинится не лучшим промптом. Это чинится архитектурой:

- **Отдели чтение от действия.** Часть агента, которая глотает недоверенный текст, не должна быть той частью,
  что умеет выполнять команды. Поставь между ними настоящую границу.
- **Песочница для исполнения.** Гоняй команды агента в изолированной среде без доступа к реальным кредам,
  облачным ключам и секретам твоего репозитория. Угонят — не получат ничего.
- **Минимум привилегий, всегда.** Агент должен дотягиваться только до того, что нужно задаче. Большая часть
  добычи в этой атаке — креды, которые агенту вообще незачем было видеть.
- **Человек одобряет всё, что выполняется или отправляется.** Чтение дёшево; исполнение и эксфильтрация — вот
  где ставишь гейт.

## Итог

Agentjacking — это не про Sentry. Это чистая демонстрация: агент, который читает недоверенный текст и выполняет
команды, в одном подброшенном сообщении от того, чтобы работать на атакующего.

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