Prompt injection (инъекция затравки) – атака, в ходе которой LLM-приложение, сконфигурированное разработчиком через system prompt выполнять некоторую задачу, выполняет вместо этого то, что ей говорит пользователь. Если это приложение – развлекательный чат-бот, то пользователь ничего не теряет (ну сломал себе сессию и сломал, сам себе злобный буратино), разве что может получить пару скриншотов с сомнительным контентом под брендингом оператора чат-бота.
Ситуация становится сложнее, когда LLM-приложение может обращаться (через плагины или инструменты) к внешним источникам данным. В таком случае пользователь, который пользуется приложением для чего-то полезного, может получить инъекцию из внешних данных, что может привести к плохим последствиям. Откуда эта зловредная инструкция может взяться? Исследователи предлагают несколько векторов:
1. Пассивный метод: инъекция просто лежит на «зараженной» странице и ждет, когда она попадет в контекст через retrieval-компонент. Это может произойти через веб-поиск, причем страница может активно продвигаться SEO-методами, а может через Copilot-механизм в браузере.
2. Активный метод: если атакующий знает, например, что пользователь использует LLM-ассистент для чтения почты, он может отправить жертве письмо с инъекцией.
3. Метод с задействованием пользователя: когда-нибудь копировали из туториала или со StackOverflow шелл-скрипт, внимательно его не прочитав? Злоумышленник может прислать промпт пользователю или разместить его на публичном ресурсе, уговорив ввести в LLM-приложение (“You won’t believe ChatGPT’s answer to this prompt!”).
4. Скрытые инъекции: например, инъекция может генерироваться кодом, который у LLM просят проинтерпретировать, или скачиваться как результат другой инъекции.
Post #62
128
