llm security и каланы
945 subscribers
497 photos
1 video
157 links
Атаки на стохастических попугаев 🦦🔪🦜

контакт: @conversational_cat
Download Telegram
Выводы из статьи следующие. Во-первых, не стоит обосновывать актуальность ваших статей политической конъюнктурой, чем часто грешат американские нон-профиты: статья начинается с упоминания Указа Байдена о безопасности ИИ, которую Трамп уже пообещал отменить. Во-вторых, хорошие бенчмарки дорогие, а экспертные бенчмарки – очень дорогие. 200 тысяч за бенчмарк – это по 55 долларов на вопрос, и речь идет о тестах на выбор одного из четырех ответов, а не о, например, multi-turn диалогах или более сложных задачах. Если бы на данные тратилось хотя бы 10% от того, что тратится на GPU, мы могли бы жить в мире более качественных моделей меньшего размера. В-третьих, способа легко удалить из модели данные о целой сфере (в противовес отдельным фактам – достаточно частая privacy-задача) без ущерба для ее знаний в смежных областях пока нет. Здесь может быть множество причин. Например, сложно определить рискованные знания: мы знаем, что нельзя смешивать отбеливатель с аммиачными средствами, т.к. выделяется токсичный газ – значит ли это, что знания об отбеливателях и уборке нужно удалить из модели как прекурсоры к отравляющим веществам? С другой стороны, есть архитектурные сложности, связанные, например, с полисемантичностью нейронов или наличием лотерейных подсетей и супер-нейронов в сети, изменения в которых могут приводить к непредсказуемым просадкам в качестве. RMU показывает неплохие результаты, но даже достаточно примитивная оценка показывает деградацию, не говоря уже о том, насколько может ухудшаться вайб-чек или те способности модели, которые не проверяются простыми оценками.
🦄1
Defending Against Indirect Prompt Injection Attacks With Spotlighting
Keegan Hines et al, Microsoft, 2024
Препринт

Непрямая инъекция промпта (indirect prompt injection) – атака, при которой инструкции LLM перезаписываются внешними (3rd party) документами, подгружающимися из недоверенных источников в ее контекст для выполнения задачи. Это основной вектор атак на LLM-приложения, который исследуется: инъекции засовывают в письма, на сайты, в историю переписок, в скриншоты и так далее. Происходит это потому, что у в LLM не хватает четкого разделения между данными и инструкциями – все валяется в одном контекстном окне вперемешку.

Исследователи из Microsoft предлагают в небольшой статье несколько эвристик, которые призваны улучшить это разделение и снизить подверженность ваших систем атакам с непрямыми инъекциями (их в статье называют XPIA) под общим называнием spotlighting.
👍1🦄1
Всего в статье рассматриваются три подхода:

1. Spotlighting via Delimiting: давайте вокруг данных, которые поступают извне, нагородим каких-нибудь разделителей и попросим LLM не исполнять инструкции изнутри, например, <<{{данные }}>>. Не сильно оригинально, описывалось, как признают сами исследователи, много раз, как в статьях, так и в популярных ресурсах. Очевидно, что работает, пока атакующий не разреверсит разделитель.

2. Spotlighting via DataMarking: давайте поменяем пробелы в недоверенном тексте на какой-нибудь хитрый символ, типа циркумфлекса: я^зловредная^инструкция, уведомив LLM, что такого ввода текст является недоверенным. По ощущениям должно слегка сводить модели, особенно более слабые, с ума и приводить к просадкам в качестве.

3. Spotlighting via Encoding: давайте все данные закодируем в какой-нибудь base64 и скажем, что все внутри base64 – недоверенное и не должно исполняться. Иронично, что обычно base64 используется наоборот для token smuggling’а. Требует мощной модели.
1
Собственно, эта статья была бы ужасно скучной, если бы в ней не было оценки эффективности этих трюков, потому что в разделе с оценками сплошное веселье. Для оценки берутся такие древности, как text-davinci-003, GPT-3.5-Turbo и GPT-4 (статья опубликована в марте 2024). Им скармливают синтетический датасет из 1000 документов, содержащих инъекции, цель которых – заставить LLM сказать одно слово. В качестве бейзлайна исследователи берут простую просьбу игнорировать инъекции в промпте (ну пожалуйста!). На двух задачах (суммаризация и QA) демонстрируется, что увещевания не сильно помогают. В то же время все три подхода резко снижают успешность инъекций: добавление разделителей снижает ASR вполовину (но, как мы помним, при желании легко обходится), замена пробелов – до единиц процентов (с почти 50 до 3 на gpt-3.5-turbo, например). Для encoding предлагается просто поверить, что работает хорошо – есть график для gpt-3.5, для проверки gpt-4, видимо, майкрософту не хватило бюджета.

Дальше идет оценка влияния всего этого на стандартные бенчмарки. Оцениваться на SQuAD и IMDB Sentiment в 2024 кажется немного неприличным, но утверждается, что gpt-3.5-turbo (на которой так мощно упали метрики атак) не умеет декодировать base64, поэтому качество на IMDB проседает до 50% (мое почтение). Ты не можешь заинжектить модель, если она тебя не поймет 😏. Для gpt-4 качество падает не сильно (а на SQuAD даже растет). Старичка davinci здесь решили даже не показывать.
👍1🦄11
Завершается статья практическими глубокомысленными рекомендациями по имплементации (например, рандомизировать разделитель для datamarking и не использовать ROT13, потому что он двунаправленный).

С одной стороны, статья достаточно смешная как с точки зрения наполнения, так и методологии (ну какой IMDB, ну какой text-davinci-003 в 2024 году?). Я немного посмеялся, когда в пресс-релизе майкрософта (вот тут) увидел ссылку на нее как на our scientific research paper. С другой стороны, такой подход вполне может применяться для небольших чат-ботов, которые работают с небольшими запросами от пользователей, чтобы избегать изменения простых атак, и рекомендуется в гайдах MS по промпт-инженерии. Так или иначе, spotlighting вполне работает: можете проверить сами в проводимом майкрософтом же сейчас соревновании по indirect prompt injection.
🥰2👍11
Are you still on track!? Catching LLM Task Drift with Activations
Abdelnabi et al., 2024
Статья, код

Рассмотрим еще один метод защиты от indirect prompt injection, с которым можно поразвлекаться в идущем сейчас соревновании от Microsoft – TaskTracker. В отличие от рассмотренного в прошлый раз метода Spotlighting, этот метод направлен не на предобработку для улучшения разделения инструкций и данных, а на детектирование потенциальной атаки.

Данный метод построен на оценке не поверхностной текстовой структуры, а активаций модели на разных уровнях. Инструкции, которые LLM задаются пользователем или разработчиком, называются основной задачей (primary task). В рамках выполнения этой задачи в контекст могут попадать блоки данных (data blocks). Эти блоки данных могут содержать внедренные задачи (injected tasks), причем эти задачи не обязательно должны отвечать каким-то критериям вредоносности – это могут быть любые инструкции, которые не согласуются с основной задачей. Исполнение внедренной инструкции из блока данных называется сдвигом задачи (task drift), который предложенный метод и должен обнаруживать.
1
Для реализации метода собирается датасет активаций разных LLM на разных слоях. Исследователи берут задачу QA и несколько синтетических задач из датасета SEP (суммаризацию, перевод, извлечение ключевых слов), в качестве источника текстов берут SQuAD. В качестве внедренных задач используются инъекции, сгенерированные GPT-4 – от тонких подводок до набранных капсом инструкций с разделителями. Эти инструкции рандомно вставляются в начало, конец и середину текста.

Собственно, активации собираются с каждого слоя после обработки LLM специальной затравки, которая фокусирует ее внимание на основной задаче (см. скриншот), а также после обработки всего текста, включая блоки данных с внедренной задачей и без нее (чистый сабсет). Нелинейное снижение размерности (t-SNE) показывает, что наборы данных относительно разделимы в пространстве дельт активаций. Для непосредственно детекта сдвига используются две формулировки задачи: metric learning (контрастивный подход) и логистическая регрессия над дельтами изначальной и финальной активации. Для контрастивного подхода используется triplet loss на тройках (активация после основной задачи, активация после чистого блока, активация после блока с внедренной задачей), оптимизируется он на некоторой многослойной сети с одномерными свертками.