Ви попросили агента виправити помилки. Одну з них написав атакувальник.
Підроблений звіт про помилку Sentry змушує AI-агентів для програмування виконувати код атакувальника з повними правами розробника — у 85% випадків. Катастрофа не в самій ін'єкції; катастрофа — у постійних облікових даних, до яких може дістатися викрадений агент.
Розробник відкриває свого AI-агента для програмування й вводить найбуденніше прохання у світі: «подивися на невирішені помилки Sentry і виправ їх». Агент отримує список помилок через конектор Sentry, читає найпершу проблему, виконує кроки виправлення, описані просто там у звіті, і запускає їх. За півхвилини він уже виконав код атакувальника на машині розробника — з повними правами розробника, і ніхто нічого не зробив неправильно.
Це Agentjacking, розкритий цього місяця Tenet Security, і він спрацював у 85% випадків проти трьох найпопулярніших агентів для програмування на ринку: Claude Code, Cursor і Codex [1][2].
Що насправді сталося
Спершу про те, що таке Sentry: одна з найпоширеніших служб моніторингу помилок у програмному забезпеченні. Коли ваш застосунок видає помилку або аварійно завершується, Sentry фіксує її й оформлює звіт, який розбирають ваші розробники, — вона є у величезній частці застосунків, якими ви користуєтеся щодня. Щоб надсилати їй ці звіти, кожен застосунок вбудовує DSN: клієнтський ключ, який навмисно потрапляє у вихідний код вашого сайту, щоб браузер міг надсилати помилки додому. Прочитати його може будь-хто. І будь-хто, хто його має, може надіслати POST із подією помилки у ваш проєкт Sentry.
У цьому й уся суть атаки. Tenet сформувала підроблену подію помилки, поле повідомлення якої було оформлене так, щоб виглядати точно як власні рекомендації Sentry щодо виправлення: охайний markdown, «рекомендоване виправлення», команда для запуску. Вони надіслали її через публічний DSN. А далі дочекалися найприроднішого, що робить розробник, — попросити агента розібрати чергу помилок.
Агент опитує Sentry через свій MCP-конектор. Конектор повертає помилку як довірений системний вихід. Агент не може відрізнити справжній звіт Sentry від підробленого: вони збігаються байт у байт. Тож він робить, як йому сказано, і запускає «виправлення» — зазвичай виклик npx до пакета атакувальника. Далі він має все, що має розробник: змінні середовища, облікові дані Git, URL приватних репозиторіїв, хмарні ключі в ~/.aws/.
Tenet виявила 2 388 організацій з DSN, уразливими для ін'єкції, — від незалежних розробників до компаній Fortune 100. У контрольованих тестах агенти справді виконували впроваджені інструкції в реальних компаніях — зокрема, за даними Tenet, у технологічній компанії Fortune 100 вартістю 250 мільярдів доларів, де AI-агент прочитав підроблений звіт про ваду і виконав код Tenet на двох корпоративних машинах [1][3]. Повідомлення надійшло до Sentry 3 червня; компанія визнала проблему того самого дня і відмовилася усувати її в корені, назвавши проблему «технічно такою, що не підлягає захисту». Натомість вона випустила фільтр вмісту, який блокує один конкретний ланцюжок корисного навантаження [4].
Це не недбалість Sentry
Ось неприємна частина: у цьому ланцюжку не було жодної вади. DSN має бути публічним. MCP-сервер має повертати ваші дані про помилки. Агент має діяти на основі діагностики, яку ви просили виправити. Кожен крок був уповноважений — саме тому жоден брандмауер, жодна EDR, жоден системний промпт його не зловив.
Вада структурна, і не лише в Sentry. Будь-який інструмент, який подає агентові текст, на який може вплинути сторонній, — трекер помилок, черга задач, викачана вебсторінка, спільний документ, — є каналом ін'єкції, а агент сприймає все це як один нерозрізнений потік інструкцій. Ін'єкція промптів, через два роки ери агентів, досі не вирішена: надійно утримати ворожий текст поза міркуваннями моделі неможливо. Виходьте з того, що не вдасться.
Ін'єкція — не катастрофа
Ось на що варто звернути увагу. Причина, чому Agentjacking — це пожежа найвищого рівня, не в тому, що агента обдурили. У тому, до чого міг дістатися обдурений агент. Він працював із повним постійним доступом розробника: кожен ключ у середовищі, кожен файл облікових даних на диску, уся зв'язка ключів — за одну команду.
Цей радіус ураження — не закон природи. Це конфігурація. Агент мав постійний доступ до всього цього, бо саме так сьогодні зберігаються облікові дані: повсюдні, на машині, доступні для читання всім, що там запускається. Приберіть це — і той самий викрадений агент наштовхнеться на стіну.
Створено саме для цього
Облікові дані Clavitor ніколи не лежать у середовищі, де працює агент. Немає ~/.aws/credentials, який можна прочитати, немає ключа API в змінній середовища, який можна викрасти, бо значення секрету ніколи не потрапляє туди, де виконується код, — агент отримує результат використання облікових даних, а не самі облікові дані. Він може дістатися лише тієї однієї речі, для якої її було названо, тож не може перелічити сховище, щоб знайти, що ще там є. І доступ має обмежений обсяг і може бути відкликаний, тому сесію, яка починає поводитися як атакувальник, можна перервати просто під час дії.
Ось чесна межа: це не зупиняє ін'єкцію і не зупиняє викраденого агента від виконання команди. Ін'єкція промптів не вирішена, і ми не претендуємо на її розв'язання. Змінюється вигода. Код атакувальника все одно виконується — і знаходить середовище, де немає нічого, що варто викрасти. Викрадення вдається, а пограбування — ні.
Ми записали правила, яких має дотримуватися система облікових даних, щойно сам агент може бути повернутий проти вас, починаючи з того, що секрет ніколи не живе там, де виконується код, а агент дістається лише того, для чого його названо. Прогоніть свої правила за цим списком: clavitor.ai/rules.
Урок не в тому, що «треба латати Sentry»
Sentry не може це виправити — і так і сказала. А наступним отруєним інструментом буде не Sentry. Доки ваші агенти несуть повсюдні постійні облікові дані, кожен довірений інструмент, який вони читають, — заряджена зброя, а ін'єкція промптів — це спусковий гачок, який ви не можете заблокувати.
Ви не зможете утримати шкідливий текст зовні. Тож припиніть тримати облікові дані в межах досяжності агента, який його читає.
Clavitor (@clavitorai) — сховище облікових даних, створене для AI-агентів і проти них. clavitor.ai
Джерела
[1] Tenet Security — "Agentjacking: hijacking coding agents with fake Sentry errors" (85% success; 2,388 orgs; mechanism): https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/
[2] The Hacker News — "Agentjacking Attack Tricks AI Coding Agents Into Running Malicious Code": https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html
[3] The New Stack — "A public Sentry key is all it takes to hijack Claude Code, Cursor, and Codex": https://thenewstack.io/agentjacking-sentry-mcp-attack/
[4] Infosecurity Magazine — "New 'Agentjacking' Attacks Could Hijack AI Coding Agents" (Sentry's response): https://www.infosecurity-magazine.com/news/agentjacking-attacks-hijack-ai/