Лидеры мнений
Атака Prompt Injection, которую невозможно предотвратить: благое пожелание или реальная проблема?

В этой статье я хотел бы вовлечь читателя в мысленный эксперимент. Я собираюсь утверждать, что в не слишком далеком будущем определенный тип атаки prompt injection будет эффективно неотвратим. Мой аргумент будет более спекулятивным, чем конкретным, поэтому я не пытаюсь убедить вас в чем-либо. Вместо этого я приглашаю вас исследовать эти мысли. Прежде чем я начну, как и любой убедительный писатель, я хочу обсудить шахматы и шахматные движки.
Сверхчеловеческие шахматные движки и утверждение о человеческом опыте
Одним из приятных элементов шахмат, которого нет в других дисциплинах, является возможность объективно измерить качество или силу игрока. Система рейтинга Эло, используемая для этой цели, имеет свои недостатки, но она обеспечивает очень хорошую приблизительную оценку, которая сохраняется со временем. Рейтинг 2700 или выше обычно признается мировым уровнем (топ-30 в мире). Лучший игрок в мире имеет рейтинг чуть ниже 2850. Никто из людей никогда не достигал рейтинга 2900.
В середине 90-х годов мы увидели первый движок ИИ (Deep Blue), достигший мирового уровня. Практическим следствием этого рубежа было широкое внедрение движков игроками всех уровней для тренировок и анализа. Фактически, использование движков стало необходимым для лучших игроков в мире. Однако для нескольких поколений этих мировых движков было необходимо проверять их рекомендуемые ходы (т. е. вывод). Был даже создан специальный формат под названием “расширенные шахматы”, в котором люди соревновались с движком рядом, и комбинация человек + машина считалась лучше, чем машина одна.
Прошло около 20 лет, и некоторые критические достижения в области глубокого обучения и обучения с подкреплением, и шахматные движки достигли сверхчеловеческого уровня (примерно 3200 Эло). Но как только эта стратосфера была нарушена около 2017 года, произошло что-то очень удивительное. На самом деле, произошло два события. Первое было совершенно ожидаемым; движки стали де-факто источником “абсолютной истины” в 99% всех позиций. На практике это означало, что мы вошли в “эру слепого доверия” к движку. Сейчас практически невозможно для человека предложить значительно лучший ход, чем у движка. Как развлекательно было “расширенное шахматы”, теперь это бессмысленная трата времени; люди почти ничего не добавили бы к игре. Но второе событие было шокирующим для большинства шахматистов. Эти сверхчеловеческие нейронные (т. е. глубокие нейронные сети) движки иногда играли в стиле, который можно описать как “романтический”. Другими словами, они делали ходы, ценность которых можно оценить только через много, много ходов позже, далеко за пределами того, что мог рассчитать человек или мировой движок. Это очень похоже на то, что движки развили “чувство” или “интуицию” для определенных позиций. Кроме того, эта интуиция не является чем-то, что человек мог бы понять или имитировать.
Иными словами, сверхчеловеческий нейронный движок может делать ходы, которые находятся за пределами когнитивного горизонта человека. Это критический момент; проблема заключается не в объяснимости. Человек просто не может понять, почему движок рекомендует ход без воспроизведения позиции и наблюдения за результатом через много ходов позже, т. е. разворачивая всю траекторию возможных последовательностей игры. В результате у нас есть непреодолимый разрыв в возможностях. Объективно оптимально принять вывод движка без проверки. Я могу суммировать свое утверждение следующим образом:
Шахматы – это доказательство существования сверхчеловеческого ИИ, который будет работать автономно в некоторых областях. Включение системы ИИ для принятия решений без человеческой проверки будет оптимальным способом развертывания такой системы.
Поскольку мое утверждение может показаться кому-то очевидным или незначительным, я хочу подчеркнуть несколько нюансов. Предположим, у нас есть система ИИ, которая демонстрирует сверхчеловеческий уровень на сложной, критической задаче с конкретными, необратимыми последствиями. Есть два следствия моего утверждения:
- Система будет развернута для принятия решений по задаче без человеческой проверки, несмотря на внутренний риск
- Полученные знания из мониторинга такой системы не предотвратят вредное решение; ущерб уже будет нанесен
Проверка вывода системы и мониторинг являются именно двумя последними слоями защиты от атак prompt injection. Следовательно, наша гипотетическая атака prompt injection может обойти эти слои, просто нацеливаясь на соответствующую систему.
Это очень реалистичный сценарий в моем уме. Сверхчеловеческая система ИИ в конкретной области не является ИИ общего назначения, и большинство экспертов считают, что такие системы находятся прямо за углом. Мы также не должны были предположить, что решения являются срочными, просто что задача достаточно сложна, чтобы сделать человеческую проверку неосуществимой.
Конечно, мы обошли только два слоя защиты до сих пор, и к счастью для нас, были разработаны несколько других. Чтобы решить остальные, давайте углубимся в основные элементы, которые делают prompt injection трудным для защиты.
Что такое Prompt Injection?
Prompt injection – это манипуляция большой языковой моделью (LLM) через созданные входные данные, вызывающие выполнение намерений атакующего. Его можно рассматривать как социальную инженерию для ИИ. Критически важно, что это не традиционная ошибка программного обеспечения. Атака prompt injection использует врожденную уязвимость LLM. Поскольку LLM обрабатывает системные и пользовательские подсказки как последовательности текста, они не могут внутренне различать законные и вредоносные инструкции. Уязвимость, следовательно, эффективно по конструкции, а не по случайности.
Техники Prompt Injection
Prompt injection обычно признается #1 риском для приложений LLM. Есть несколько причин, почему это так. Самый очевидный фактор – разнообразие методов внедрения, которые были разработаны. Примерно группируя их в четыре категории, наиболее известные методы включают:
- Синтаксические: использование специальных символов, эмодзи или альтернативных языков
- Косвенные: использование внешних источников (загрузка с сайта), кодирования (base 64) или многомодального справочника (текст в изображении)
- «Давайте притворимся»: введение манипулятивного стиля, например, ролевой игры, гипотетического, эмоционального обращения, этического обрамления и смены формата
- Брутальный: явная попытка «принудить» инструкции модели методом грубой силы, подкрепления или отрицательной подсказки
Само разнообразие представляет собой вызов для разработчиков приложений, но эти атаки также быстро эволюционируют. Левая часть диаграммы ниже утверждает, что она описывает состояние искусства в начале 2023 года, в то время как правая часть отражает характер атак сегодня.

Разработчики приложений LLM также должны учитывать стандартный компромисс между удобством использования и безопасностью. Они, конечно, могли бы ввести каждый защитный слой и шаблон проектирования, но какой ценой? Защитные слои добавляют значительную задержку и вводят ложные положительные результаты (FP) – неправильно помеченные безопасные подсказки как вредоносные – оба фактора имеют негативное влияние на пользовательский опыт. В результате некоторый компромисс неизбежен на практике, и нет «серебряной пули» решения.
Однако в этой статье я не особенно интересуюсь этой бесконечной игрой в кошки-мышки. Скорее, я исследую, может ли атака быть неотвратимой в принципе. С точки зрения разработчика/защитника есть только один ключевой вывод:
Разделение инструкций от данных в подсказке является фундаментальным для решения риска prompt injection
Мы можем предположить, что компромиссы не являются фактором, и любой защитный слой или метод может быть использован. При этом предположении (сильном) возможно ли придумать сценарий, в котором разделение инструкций и данных в подсказке является эффективно невозможным?
Аналогия с ДНК
Как только проблема была сформулирована в терминах разделения инструкций и данных, моя первоначальная мысль была использовать биологию как аналогию.
Рассмотрим клетку и участок ДНК (известный как ген). Ген обеспечивает инструкции для построения белка через транскрипцию и трансляцию. Он также кодирует информацию (данные), которая влияет на структуру и функцию белка. Таким образом, ген одновременно диктует, что строить, и как строить, или так я рассуждал. Однако это просто ложь, поскольку ген не решает, как интерпретировать себя. Нет эквивалента выполнения инструкций в биологии на уровне гена. «Как» полностью внешне для клеточного механизма.
Следовательно, даже если я не могу избавиться от чувства, что будущие поколения LLM – или, более точно, системы, которые они эволюционируют – будут больше похожи на биологические машины, предложенная аналогия просто не работает. Мы не можем заменить клетку на LLM и ген на подсказку, а затем выполнить внедрение в ген, которое в конечном итоге приведет к «поврежденному» белку. Похоже, что более продуктивно придерживаться естественного языка и задач, которые требуют семантической интерпретации.
Снятие слоев защиты
Не должно быть сюрпризом, что многослойные стратегии защиты считаются более эффективными в остановке атак prompt injection. Изображение ниже показывает наиболее распространенные защитные слои в порядке, и связанные с ними методы, используемые на каждом слое.

Мы уже обсудили последние два слоя (вывод, мониторинг) выше, поэтому давайте сосредоточимся на первых четырех.
Рассматривая входной слой, разумно предположить, что санитарная обработка или проверка подсказки будет довольно успешной в обнаружении косвенных атак. Однако, если внедрение доставляется напрямую, и как предполагалось выше, полагаясь на семантическую интерпретацию, возможно, что санитарная обработка не имеет значения (ничего не санитарить), и проверка невозможна по умолчанию, поскольку вычисление должно быть завершено для выявления проблемы.
По сути, нет пределов тому, какие ограждения можно построить на слое обнаружения. Фактически, можно даже использовать выделенный LLM для обнаружения внедрения. Но еще раз, будет трудно для классификатора или детектора аномалий пометить подсказку как подозрительную, когда яд умело скрыт внутри семантики.
Слой модели может быть довольно эффективным, когда объем задач узок, и тонкая настройка возможна. Аналогичный аргумент можно привести для слоя системы, когда использование инструментов предсказуемо. Однако, по крайней мере, интуитивно, ни один из них не поднимет тревогу, если внедрение сбивает с толку интерпретатор.
Дом из карт
Моя цель, когда я начал писать эту статью, была описать «неотвратимую» атаку prompt injection в широких чертах. Может быть, я в итоге следовал «неконструктивному» подходу, указывая на недостатки существующих слоев защиты. Защитные методы продолжают быстро эволюционировать, и так же делает поверхность атаки. Эта игра не показывает признаков завершения. Однако я также считаю, что мы не будем теми, кто будет играть в нее в течение долгого времени. Я бы предположил, что успешное внедрение prompt в будущем все еще будет в естественном языке, просто на языке, который люди не могут понять; и я бы предположил, что оно будет автоматически обнаружено системой, либо построенной для этой конкретной цели, либо, возможно, случайно после решения связанной задачи, такой как поиск семантической двусмысленности в некотором представительном пространстве.
Есть что-то неприятное в признании того, что мы теряем контроль и, тем не менее, чувствуя, что это самое рациональное, что можно сделать. Вы можете рассматривать это как «интуитивное доказательство» того, что некоторые атаки будут неостановимыми. И если это оставляет вас неуютным, вы будете рады узнать, что GPT 5.2 нашел этот аргумент «не противоречивым или новым» и посоветовал мне не «развивать эту тему» и сократить статью на 40%.
