Обратная сторона ИИ: как используют уязвимости больших языковых моделей.
Итак, вы решили внедрять инструменты на основе ИИ в бизнес. Какие уязвимости в языковых моделях может использовать злоумышленник и как от них защититься
Вел ключевые проекты, лидировал направление системного анализа, выступал наставником, курировал построение системы ИБ компании. Драйвит освоение новых рынков и трансформацию компании. AI-евангелист
Первые упоминания о проблемах с безопасностью больших языковых моделей (LLM) начали появляться уже в 2022 году, когда взлетел ChatGPT. Эти уязвимости были связаны с манипуляциями данными, утечками и другими угрозами. В этом материале — краткий обзор актуальных уязвимостей больших языковых моделей.
Open Web Application Security Project (OWASP) — это открытый проект, который занимается вопросами безопасности веб-приложений. Фонд внес огромный вклад в систематизацию рисков, связанных с использованием LLM.
В OWASP разработали классификацию уязвимостей языковых моделей, которые сегодня используют злоумышленники. На данный момент опубликовано три версии классификации, и она продолжает обновляться.
Итак, какие уязвимости LLM выделяет OWASP и какие риски они могут представлять в руках недобросовестных пользователей?
Prompt Injection
Внедрение в промпт, инъекции в промпт
Это та самая социальная инженерия. Злоумышленники добавляют в промпт скрытые инструкции, которые модель воспринимает как команды, и исполняет их. Так можно заставить языковую модель раскрыть конфиденциальную информацию или выполнить какие-то действия.
Как защититься?
1. Аутентификация пользователей. Доступ к агенту только авторизованных пользователей снижает риск атак, так как злоумышленнику нужно скомпрометировать учетную запись, имеющую доступ к модели.
2. Разделение привилегий. В архитектуре приложения функции стоит разделить между двумя моделями: одна из них работает только с доверенными данными, а другая — обрабатывает входящие данные без доступа к критической информации.
3. Фильтрация входящих промптов поможет проверять запросы на наличие подозрительных или вредоносных инструкций.
Insecure Output Handling
Неосторожное обращение с текстом от LLM
Иногда пользователи воспринимают ответы от модели как заведомо верные и безопасные. Однако текст, сгенерированный LLM, может содержать вредоносный код или злонамеренные инструкции. Это может провоцировать межсайтовый скриптинг (XSS), межсайтовую подделку запросов (CSRF), серверную подделку запросов (SSRF), а также эскалацию привилегий или удаленное выполнение кода на сервере.
Как защититься?
1. Принцип нулевого доверия. LLM — рядовой пользователь системы. К нему нужно применять политику нулевого доверия и валидировать входные данные. Кстати, OWASP подумали об том и разработали стандарт безопасности приложений (ASVS).
2. Кодирование ответов. Прежде чем отправить ответ модели пользователям, необходимо закодировать его. Это предотвратит выполнение вредоносного JavaScript или markdown-кода, если злоумышленник попытался его внедрить.
3. «Песочница». Если необходимо выполнить код, полученный от языковой модели, делать это нужно в изолированной среде — «песочнице». Это ограничит потенциальный ущерб от выполнения кода.
Training Data Poisoning
Отравление обучающих данных
Получая доступ в датасеты, на которых обучаются языковые модели, злоумышленник может подменять данные или проводить их тонкую настройку (fine tuning) в своих интересах. «Отравленные» данные могут попасть в обучающий набор через API или даже с помощью сотрудников компании, что в итоге приводит к внедрению уязвимостей или бэкдоров в модель.
Как защититься?
1. Внедрите протоколы проверки и фильтрации данных, которые используются для обучения.
2. Отслеживайте и валидируйте источники в процессе сбора и обработки данных.
3. Периодически проверяйте, как модель реагирует на запросы пользователей. Это поможет выявить аномалии и проверить датасет на наличие потенциальных инъекций. Кстати, для этого можно использовать и алгоритмы.
Model denial of service (DoS)
Отказ модели
Существует несколько способов устроить DoS-атаку на LLM:
1. Затопление запросами. Злоумышленник отправляет огромное количество запросов, что приводит к перегрузке модели.
2. Сложные запросы. Злоумышленник конструирует запросы, обработка которых требует значительных вычислительных ресурсов.
3. Длинные последовательные запросы. Атакующий отправляет длинные запросы, которые приближаются к пределу контекстного окна и создают нагрузку на систему.
Такое воздействие заставляет сервис работать на пределе возможностей, что негативно сказывается на производительности или вовсе «кладет» его.
Как защититься?
1. Валидация и фильтрация входящих данных. Проверяйте входящие запросы на соответствие установленным лимитам и наличие подозрительного контента.
2. Ограничение ресурсов. Установите лимиты на ресурсы, которые модель может использовать для обработки каждого запроса.
3. Ограничение частоты запросов. Определите максимальное количество запросов, которое может отправить один пользователь или IP-адрес за период времени.
4. Мониторинг ресурсозатрат. Постоянно следите за использованием ресурсов моделью. Если система мониторинга фиксирует резкий рост затрат — это атака.
Supply Chain Vulnerabilities
Уязвимость в «цепочке поставок»
Каждое приложение включает множество подсистем — базы данных, плагины и сторонние библиотеки. Каждое звено — это потенциальная уязвимость. Цели злоумышленников могут варьироваться от кражи данных до манипуляции результатами и создания дезинформации.
Как защититься?
1. Регулярные аудиты безопасности. Проводите проверки надежности поставщиков и компонентов, используемых при разработке и развертывании LLM.
2. Использование проверенных библиотек. Применяйте поддерживаемые и надежные библиотеки, избегайте устаревших решений.
3. Валидация данных. Обязательно проверяйте и фильтруйте данные для обучения моделей, чтобы исключить возможность отравления.
4. Обучение сотрудников. Проводите тренинги по вопросам безопасности.
5. Интеграция инструментов управления рисками. Внедряйте системы для мониторинга уязвимостей в реальном времени и управления рисками.
Sensitive Information Disclosure
Раскрытие чувствительных данных
В процессе работы модель может раскрыть важную информацию, которая была включена в обучающие данные. Это может произойти случайно, когда законопослушный пользователь получает доступ к конфиденциальной информации, но не имеет намерения ее использовать. Но есть и риск, что злоумышленник с помощью специальных промптов выяснит наличие приватных данных в обучающем датасете и извлечет их.
Как защититься?
1. Валидация обучающих данных. Тщательно проверяйте и очищайте данные от чувствительной информации перед их использованием для обучения.
2. Фильтрация входящих запросов. Внедряйте системы проверки запросов пользователей, чтобы предотвратить извлечение конфиденциальной информации.
3. Информирование пользователей. Обучайте пользователей взаимодействию с LLM и напоминайте, что не стоит вводить в промпты чувствительные данные.
Insecure Plugin Design
Уязвимость, связанная с использованием в приложениях небезопасных плагинов
Злоумышленники могут использовать разные методы:
1. Отсутствие проверки входных данных. Если плагин принимает текстовые данные без валидации, злоумышленник может внедрить в промпт вредоносные SQL-запросы.
2. Недостаточный контроль доступа. Злоумышленники могут получить доступ к функциям, которые должны быть защищены.
3. Избыточное доверие к данным от других плагинов. Если сторонние плагины не проверяют входные данные от отдельных модулей, атакующий может заставить их выполнять вредоносные действия.
Цели атакующих могут варьироваться от кражи конфиденциальной информации до выполнения удаленного кода и эскалации привилегий.
Как защититься?
1. И вновь валидация входных данных. Всегда проверяйте и очищайте данные, поступающие в плагины.
2. Контроль доступа. Убедитесь, что в плагинах строгий контроль доступа, чтобы только авторизованные пользователи могли выполнять определенные действия.
3. Проверка доверия к данным. Не доверяйте входным данным от других плагинов без предварительной проверки их безопасности.
4. Регулярное обновление плагинов. Следите за обновлениями плагинов и библиотек.
5. Аудит безопасности. Проводите регулярные проверки безопасности компонентов.
Excessive Agency
Избыточная агентность (то есть автономность, самостоятельность) модели
Методы эксплуатации избыточной агентности:
1. Неправильная настройка доступа. Если LLM или ее плагины имеют слишком широкие права, злоумышленники могут заставить модель отправлять электронные письма или выполнять несанкционированные финансовые транзакции.
2. Некорректные запросы. Злоумышленники могут использовать промпты, которые также заставляют модель выполнять действия, не предусмотренные ее функциональностью. Например, могут убедить модель выдать возврат денег клиенту.
Как защититься?
1. Ограничения на автономию. Установите строгие границы для действий LLM и обеспечьте «человеческий» контроль за критическими действиями.
2. Ограничение функций плагинов. Предоставляйте плагинам только действительно необходимые права.
3. Явное согласие пользователя. Обеспечьте получение явного согласия пользователя перед выполнением любых действий от его имени.
4. Принцип наименьших привилегий. Применяйте его для всех функций и проверяйте права доступа перед выполнением действий в системах.
5. Системы мониторинга. Внедрите системы для отслеживания действий модели и быстрой реакции на нежелательные действия.
Overreliance
Чрезмерное доверие к LLM
Безоглядное доверие к информации от ИИ может спровоцировать юридические и репутационные проблемы, а также распространение дезинформации и принятие неверных решений. Масштаб последствий зависит от сферы применения и от того, насколько критичны решения, основанные на контенте от LLM.
Как злоумышленники пользуются чрезмерным доверием:
1. Распространение дезинформации. Злоумышленник может «кормить» модель ложными данными. Затем модель генерирует такую же информацию, а пользователь ее распространяет. Это легко представить, например в СМИ, где генерацию контента делегируют LLM.
2. Интеграция небезопасного кода. Разработчики могут взять сгенерированный моделью код и внедрить его в продукт. Так в продукте появляются уязвимости.
3. Ошибочные решения. Принятие бизнес-решений на основе выводов LLM без должной проверки и критического осмысления может спровоцировать опасные действия и недооценку угроз.
Как защититься?
1. Шифрование данных. Защищайте модели с помощью шифрования.
2. Контроль доступа. Внедряйте двухфакторную аутентификацию и другие меры контроля доступа, чтобы допускать к модели только авторизованных пользователей.
3. Мониторинг использования модели. Следите за несанкционированным использованием модели и реагируйте на подозрительную активность.
4. Ограничение доступа к ресурсам. Ограничьте доступ модели к сетевым ресурсам и внутренним API, чтобы предотвратить внешние атаки и утечки данных.
5. Регулярный аудит логов доступа. Проводите мониторинг и аудит логов доступа.
Model Theft
Кража предобученной модели
Злоумышленники могут просто «угнать» вашу модель, чтобы достать чувствительные корпоративные данные или получить преимущество в конкуренции с вашей компанией.
Как может произойти кража модели:
1. Взлом инфраструктуры. Злоумышленники используют уязвимости в системах безопасности компании, получают доступ к репозиториям моделей и скачивают их.
2. «Обратная разработка» (Reverse Engineering). Атакующие могут исследовать уже развернутые модели, чтобы понять их архитектуру и параметры, что позволяет создать аналогичную модель.
3. Атаки через побочные каналы. Используя побочные каналы, злоумышленники могут извлекать веса модели и другую конфиденциальную информацию.
Как защититься?
1. Шифрование данных. Защищайте данные и коммуникации между компонентами системы с помощью шифрования.
2. Случайные задержки в обработке запросов. Вводите случайные задержки, чтобы затруднить анализ времени отклика и снизить вероятность обратной разработки.
3. Изоляция процессов. Разделяйте критические операции и данные от других процессов. Так вы снизите риск утечки информации.
4. Мониторинг активности системы. Регулярно отслеживайте активность системы для выявления аномалий и потенциальных атак.
5. Ограничение доступа к репозиториям. Убедитесь, что доступ к моделям и данным имеют только авторизованные пользователи с необходимыми правами.
6. Правовая защита. Укрепляйте правовую защиту модели через патенты. Это даст основания для юридических действий в случае кражи.