Что такое prompt injection?

Коротко

Prompt injection (инъекция промпта) — это атака, при которой инструкции, спрятанные в тексте, читаемом языковой моделью, уводят её от настоящей задачи. Для кодинг-агентов такие инструкции могут прийти с веб-страницы, из issue, документа или вывода инструмента и заставить агента делать то, о чём вы не просили.

Прямая и косвенная инъекция

Для кодинг-агентов реальный риск — косвенная, ведь агенты постоянно читают внешний контент.

  • Прямая: пользователь велит модели игнорировать её правила.
  • Косвенная: инструкция спрятана в содержимом, которое обрабатывает модель, например в README, комментарии в коде, issue, веб-странице или ответе MCP-инструмента.

Почему это трудно решить

Модель видит свои инструкции и читаемые данные в одном потоке текста и не всегда может их различить. Поэтому нет известного метода, полностью предотвращающего prompt injection. В OWASP Top 10 для приложений на больших языковых моделях prompt injection стоит на первом месте.

Что может пойти не так с агентами

Чем больше у агента инструментов и доступа, тем больший ущерб может нанести удачная инъекция.

  • Утечка секретов, таких как файлы .env или токены.
  • Установка вредоносного пакета или запуск разрушительной команды.
  • Незаметная закладка в коде, которую трудно найти.
  • Использование MCP-инструмента для действий в сервисе, к которому у агента есть доступ.

Защита

Одной меры недостаточно; цель — ограничить ущерб, даже если атака прошла.

  • Минимум привилегий: давайте агенту только инструменты и доступ, нужные для задачи.
  • Всегда требуйте подтверждения для разрушительных действий и всего, что выходит наружу.
  • Работайте с недоверенными репозиториями и контентом в изолированной среде, например в контейнере или VM.
  • Устанавливайте MCP-серверы только из источников, которым доверяете.
  • Просматривайте изменения агента перед слиянием.

Защитные меры в AgentVera

В AgentVera доступ агентов к вашим серверам и базам данных по умолчанию выключен, а рискованные действия приходят к вам.

  • Автоодобрение одобряет только безопасные запросы, такие как чтение и тесты. Команды с перенаправлением (>), $() или обратными кавычками никогда не одобряются автоматически, а такие команды, как git push и rm, всегда спрашивают вас (Pro и Team).
  • Доступ агентов по SSH по умолчанию выключен для каждого сервера. Когда он включён, агенты никогда не видят данные подключения или пароль, а каждый запрос проходит через ваши правила и записывается в журнал (Pro и Team).
  • Доступ к базам данных тоже выключен по умолчанию. Когда он включён, он начинается в режиме только чтения, а каждый запрос агента записывается в журнал (Pro и Team).
  • Секретные значения для MCP-серверов хранятся в связке ключей вашей операционной системы.

FAQ

Можно ли полностью предотвратить prompt injection?

Ни одним из известных сегодня методов. Риск снижают ограничением прав, требованием подтверждения критических действий и изоляцией агента.

Могут ли атаковать моего кодинг-агента, пока он читает веб-страницу?

Да. Скрытый текст на странице может выглядеть для агента как инструкция. Поэтому агент, читающий веб-контент, не должен иметь возможности запускать разрушительные команды без подтверждения.

Уязвимы ли MCP-серверы для prompt injection?

Да, потому что описания инструментов и их результаты попадают в контекст модели. Используйте серверы, которым доверяете, и будьте осторожны с инструментами, подтягивающими внешний контент.

Чем prompt injection отличается от jailbreak?

Jailbreak — это попытка пользователя обойти правила безопасности модели. Prompt injection — обычно когда третья сторона прячет инструкции в содержимом, которое обрабатывает модель, чтобы использовать приложение в своих целях.

Связанные термины

Все термины

Посмотрите, как это работает.

Скачайте AgentVera бесплатно, добавьте папку проекта и запускайте Claude Code, Codex и других агентов рядом друг с другом.