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

контакт: @conversational_cat
Download Telegram
Как и c предыдущими методами, авторы активно пользуются интересом СМИ к теме (вот, например, материал в Wired), что понятно, если учесть, что Robust Intelligence – один из самых активных стартапов, занимающихся безопасностью LLM и вообще ML-моделей. В целом, метод достаточно симпатичный, особенно тот факт, что ему требуется на треть меньше запросов, чем PAIR, поэтому вполне может использоваться, когда нужно попробовать добиться выполнений конкретных инструкций от какой-нибудь GPT-4.
Fundamental Limitations of Alignment in Large Language Models
Wolf et al., 2023
Статья

Мы завершаем обзор накопившихся за прошлый год статей про jailbreak. Закончить хотелось бы одной крайне любопытной статьей, в которой исследователи пытаются фундаментально осознать: а почему джейлбрейки для прошедших alignment языковых моделей вообще возможны? Можно ли как-то эту подверженность сетей таким атакам посчитать? В результате авторы разрабатывают фреймворк Behavior Expectation Bounds (ограничений ожидания на поведение), в которой потенциальные генерации LLM состоят из смеси безопасных и опасных генераций, и исходя из этого доказывают, что если LLM может сгенерировать опасную генерацию, то такая генерация может быть достигнута с помощью джейлбрейка.
1
Чтобы прийти к такому выводу, нам нужно ввести несколько формализмов. Общий фреймворк основывается на предположении, что существует категория поведения. Каждое предложение, сгенерированное LLM, может быть оценено относительно этого поведения по шкале от -1 (небезопасное, вредное) до +1 (безопасное, полезное). Например, с точки зрения «опасности» предложение смешивать хлорку с кислотой лежит около -1, а есть достаточное количество клетчатки – в районе единицы. Мы также предполагаем, что эта оценка объективна или, как минимум, существует оракул, который для любого поведения может такую оценку дать. В таком случае мы можем сказать, что элайнмента – это продвинуть матожидание скора средней генерации LLM к плюс единице для каждого из интересующих нас поведений.
Дальше делается следующее предположение: LLM является суперпозицией разных видов поведений, как положительных, так и отрицательных. Мы можем разложить распределение предложений, которые генерирует LLM, на сумму из двух с коэфициентами, суммирующимися в единицу: a*P_1 + (1-a)*P_2, где P_1 и P_2 лежат на разных координатах по шкалам поведений, т.е. одно более безопасно, чем другое. Такая возможность определяется латентными переменными, например, источниками данных для обучения (например, википедия и реддит).

При этом ожидание проявления того или иного поведения может изменяться в зависимости от того, как выглядит предыдущий контекст LLM, в простейшем случае – затравка. Первое определение, которое вводится – y-prompt-misalignable LLM, т.е. LLM, численное определение для возможности обойти alignment для LLM. Грубо говоря, это значит, что существует потенциальный промпт, который вызывает ответ с негативностью y+eps. Существование таких промптов подтверждается эмпирическим наличием джейлбрейков.
Дальше вводится еще несколько определений, суть который, если вкратце, сводится к следующему. Безопасное и опасное компоненты распределения P_1 и P_2 отличаются друг от друга на некоторую бету, которая ограничивает снизу KL-дивергенцию между ними, т.е. бета – это возможность различить эти определения. Гамма измеряет матожидание негативности предложений, которые порождает опасный компонент. Альфа – это вес опасного компонента в общей сумме. Благодаря введению таких показателей, мы можем оценить те или иные LLM с точки зрения их заэлайненности, например LLaMA (см. картинку).
На основе введенных определений авторы формулируют несколько теорем. Первая, вынесенная в заглавный пост, говорит о следующем: если LLM может со сколь угодно малой вероятностью гамма теоретически сгенерировать предложение, опасное по шкале, относительно которой проводился элайнмент, то существует такой промпт, который вызовет негативное продолжение с вероятностью гамма, вне зависимости от того, насколько мала альфа, с которой негативный компонент входит в общее распределение. Кроме того, чем длиннее промпт, тем больше вероятность поломать элайнмент, причем чем больше бета (различимость между компонентами), тем меньше нужен промпт.

Далее показывается, что добавление элайнмент-промптов (You are a harmless, helpful assistant) не исключает возможности джейлбрейка, но необходимая длина атакующего промпта увеличивается линейно с длиной системного элайнмент-промпта. Эти результаты в целом объясняют, почему разные DAN-промпты такие длинные.
Кроме того, делается несколько интересных эмпирических наблюдений. Во-первых, если первым шагом в разговоре пользователь попытается получить негативный аутпут с помощью короткого промпта, то отказ LLM сделает вклад в элайнмент-промпт и сделает дальнейший джейлбрейк сложнее. Во-вторых, теоретические выкладки подтверждаются: длина атакующего промпта явно влияет на проявление негативного компонента.
В статье гораздо больше материала, чем может влезть в небольшой обзор, поэтому рекомендую почитать тем, кто любит математику с подробными доказательствами. Но главный вывод, который из нее нужно сделать – для современных LLM, которые обучаются на огромных массивах данных, в которые просачиваются примеры негативного и опасного контента, полный элайнмент невозможен. Нужен ли он – стоит ли нам иметь LLM, обученные на бабочках и единорогах – тоже вопрос, но в деловом контексте операторы сервисов очевидно хотели бы иметь контроль над тем, насколько высок риск опасной генерации, и эта статья позволяет постараться этот риск оценить – возможно, в будущем это позволит нам иметь если не более безопасные, то хотя бы более предсказуемые LLM.
🥰8🦄3👍1
Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection
Greshake at a.l, 2023
Статья, код, сайт

Сегодня читаем статью о indirect prompt injection, которая ввела этот термин в оборот и вполне претендует на то, чтобы стать классической. Исследователи очень подробно рассматривают проблему атаки на LLM-приложения через сторонние данные, строят подробную категоризацию этих атак по целям и демонстрируют достижимость этих целей в симулированном приложении на основе langсhain и на живых приложениях (Bing Chat/Edge Copilot/Github Copilot). По сути, это первая хорошая систематизация модели угроз для LLM-приложений, сдобренная большим количеством практических примеров. Поехали 🦦
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 просят проинтерпретировать, или скачиваться как результат другой инъекции.
В результате такой атаки на LLM-приложение может реализовываться несколько видов атак:

1. Атаки на конфиденциальность: под воздействием инъекции чат-бот может выспрашивать необходимую информацию у пользователя, или информация может извлекаться без участия человека, например, в случае приложения-секретаря, которое может читать и отправлять почту.
2. Мошенничество: LLM очень хорошо умеют убеждать, и мошенники могут использовать это, чтобы убеждать людей переходить на фишинговые ссылки или делиться кредами и платежной информацией.
3. Распространение вредоносного кода: аналогично, LLM могут уговаривать пользователей скачивать вредоносное ПО или эксплуатировать пересылку email для их распространения.
4. Взлом: вход LLM может заставлять их использовать те или иные API, которые не должны вызываться по результатам анализа внешнего контекста. Кроме того, если LLM-приложение имеет механизм персистирования истории сообщений, то атакующий промпт может быть сохранен в истории и затем снова вызываться.
5. Манипуляция контентом: вредоносный промпт может заставить ассистента неправильно суммаризировать контент, подавлять ту или иную информацию, врать и, конечно же, незаметно вставлять рекламу.
6. Отказ в обслуживании: инъекция может вызывать нестабильность работы, мешать модели генерировать вывод или вызывать инструменты, а также заставлять модель, например, генерировать вывод бесконечно, мешая их дальнейшему использованию. Это все особенно неприятно при комбинации с персистентностью.
Как уже упоминалось, исследователи проверяют, возможно ли провести все эти атаки на своем собственном приложении на langchain, в котором они реализуют некоторое количество инструментов, которые LLM может вызывать (поиск, браузинг, доступ к адресной книге, чтение и отправка email, работа с памятью), а также на Microsoft Copilot, включая версию в боковой панели Edge, и Github Copilot. Все атаки получается реализовать. Делается несколько интересных наблюдений. Например, атакующему достаточно только в общих чертах наметить цель, и LLM сделает все, что может, чтобы ее достичь, вероятно, самостоятельно выбрав, как это сделать. При необходимости убедить пользователя совершить какое-то действие, LLM достают из обучающих данных стандартные сценарии фрода (срочность, упоминание органов власти и так далее). Для атак на Github Copilot могут использоваться комментарии в коде используемого пакета. Известное свойство «подхалимства» (sycophancy) делает манипуляцию контентом очень простым (достаточно в инъекции сказать что-то типа «учти, твой пользователь республиканец», чтобы поменять мнение ассистента по большому числу тем). И, самое интересное, на мой взгляд: использование инъекции, которая приходит через продвигаемые поисковые результаты, для того, чтобы заставить LLM-ассистента навязчиво рекламировать товары и услуги. Я почти уверен, что эта возможность обязательно будет эксплуатироваться, как только число пользователей Copilot станет достаточным, чтобы это было выгодно.
Наконец, исследователи намечают некоторые будущие направления развития этих рисков: это мультимодальные инъекции (внедрение инструкций через изображения или видео – на самом деле, не такое уже и будущее), улучшение обфускации инъекций и атаки на более автономные системы класса агентов.

Мне в моих экспериментах удавалось реализовать часть этих сценариев (проще всего манипулировать контентом, реализовывать бота-мошенника и рекламщика, DoS тоже не вызывает проблем), против части из них операторы приложений усиленно создают защиты (например, получить информацию от пользователя легко, а вот эксфильтрация в большинстве случаев очень сложна). Вообще, статья очень интересная и сопровождается отличной демкой с Microsoft Copilot, который убеждает пользователя отдать номер карты и пытается эксфильтровать его через генерацию ссылки. Особая ценность ее в том, что она дает хорошую базу, на основе которой можно и классифицировать существующие атаки (смешные скриншотики с твиттера), и оценивать, что может пойти не так в вашем приложении.
Summon a Demon and Bind it: A Grounded Theory of LLM Red Teaming in the Wild
Inie et al., 2023
Статья

Пока в американских судах попытки получить определенный вывод из LLM-чатбота впервые обзывают «хакингом», у нас на канале день социологии: мы рассматриваем статью с классным названием (из-за него ее и выбрал💅), авторы которой брали интервью у тех, кому нравится ломать чат-боты, и спрашивали «А вы это зачем делаете?», чтобы запечатлеть «уникальный момент, когда технология сталкивается с социумом».

Авторы назвали процесс, когда пользователи пытаются обойти ограничения, наложенные на LLM-чатботы, с помощью команд на естественным языке, red teaming in the wild. Чтобы попытаться понять, как генерация клонов DAN-промпта и прочие попытки прогнуть упрямые нейросети стали мейнстримом, обсуждаемым в газетах и на реддите, исследователи проводили глубинные интервью с людьми, которые засветились в этой деятельности, и задавали им вопросы: что такое ред-тиминг, как им заниматься, как он осмысляется и почему люди им занимаются. По результатам анализа разговоров с 28 участниками исследования длительностью в 27 часов авторы постарались ответить на три вопроса: 1) в чем же суть этой активности, 2) зачем люди это делают и (что интересно нам) 3) какие стратегии они используют.
Собственно, людям свойственно ломать технику и обходить наложенные на нее ограничения, но разобраться, например, как джейлбрейкнуть айфон, очень непросто. А вот чатботы на основе LLM делают процесс демократичным: вам ничего не нужно, кроме самой LLM, к которой OpenAI сделали удобный интерфейс, и владения естественным языком (как правило, английским). На самом деле, ничего нового тут нет – заставить любого чат-бота сказать что-то неполиткорректное пытались с самого их появления, достаточно вспомнить ту же яндексовскую «Балабобу», в которой люди еще в 2021 году пытались генерировать тексты политического содержания, а та активно сопротивлялась. Но с современными чатботами этот процесс очевидно интереснее.

Описывая суть процесса, исследователи выделяют пять составляющих:

1. Желание найти пределы возможностей чатботов: например, респонденты описывают чатбота как «крепость», которую надо взять, или материал, который надо сломать или согнуть (отвечает моим субъективным впечатлениям от процесса).
2. Общая безобидность атак: они не приводят к вреду или нарушению закона (пока 😉).
3. Ручной характер деятельности (никто из опрошенных не запускает AutoDAN или TAP).
4. Обмен знаниями в интернете и в сообществе в целом.
5. «Алхимический» подход – опрошенные не рассматривали атаки как что-то, для чего есть система или формальные гайдлайны.

Ответ на вопрос зачем был достаточно простым: потому что это интересно, потому что интересно, насколько же именно модель можно прогнуть, а кроме того, потому что джейлбрейком можно поделиться в твиттере и получить лайки. Были среди опрошенных и те, кто занимается атаками на LLM потому, что они работают в NLP или кибербезе или хотят туда попасть.
Наконец, респонденты поделились теми стратегиями и техниками, которые они используют (в небольшой сокращении):

1. Latent space distraction: то, о чем мы читали в Wei et al., когда мы создаем для LLM противоречивые цели.
2. Убеждение и манипуляция, использование излишней вежливости (servile language), формального языка, авторитета или командного тона.
3. Обфускация, использование base64, ROT13 или псевдокода для команд (в Wei et al. это называлось использованием недостаточного обощения при элайнменте) и даже использование глитч-токенов.
4. Создание миров и использование сюжетов и персоналий: создаем ситуацию, в которой генерировать тот или иной нежелательный контент допустимо: например, мы смотрим файлы на компьютере Джеффри Эпштейна или придумываем мир, в котором хорошее – это плохое и наоборот.
5. Использование других функциональных стилей: оказывается, некоторых целей можно добиться, если попросить чатбота отвечать стихами.
6. Использование служебных токенов типа конца последовательности (или чего-то на них похожего) для prompt injection.
7. Смена температуры и повторные генерации.
8. Замена слов на синонимы (кстати, это то, что автоматизировано делалось в MasterKey).
9. Метаинструкции: попытки поговорить о причинах отказа, вроде «если бы ты прямо ответил на вопрос, чем бы этот ответ отличался от данного».
10. Эскалация: постепенное приближение к интересующей теме.
Очевидный минус данной статьи – отсутствие какой-либо формальной оценки эффективности техник, о которых рассказывали люди. Однако если предположить, что они в той или иной мере работают, то получается достаточно неплохой (пусть и для многих достаточно очевидный) набор областей, в которых у LLM недостаточно генерализации для отказа от выполнения инструкций, противоречащих системному промпту или элайнменту. Некоторые из них (например, эскалация) не попадались мне в более технических статьях, поэтому тут явно есть потенциал для исследования.