27.05.2024

Большие языковые модели (LLM): возможные уязвимости и методы защиты

Иван Рыбников, специалист по анализу кода, департамент систем безопасности BSS

Большие языковые модели – Large Language Models (LLM) – стали неотъемлемой частью современного мира искусственного интеллекта. Они позволяют создавать потрясающие продукты, улучшающие общение, перевод и обработку естественного языка. Однако, за всей своей мощью, LLM скрывают в себе серьезные уязвимости, которые разработчики приложений должны принимать во внимание.

Архитектура модели

Для начала необходимо разобраться что же такое LLM и как это работает – за основу возьмем GPT.

LLM, такие как GPT (Generative Pre-trained Transformer), используют архитектуру трансформера. Трансформер состоит из нескольких слоев кодировщика и декодировщика, каждый из которых обрабатывает информацию о контексте входных данных, дальше следует обучение модели. Они обучаются на огромных корпусах текстовых данных с помощью методов глубокого обучения. Обучение происходит путем минимизации функции потерь, которая оценивает разницу между выходом модели и желаемым ответом на обучающих данных. После этого можно уже приступить к генерации текста. 

LLM последовательно предсказывает следующее слово или символ на основе предыдущего контекста. Для этого она использует механизм внимания, который позволяет модели "сосредотачиваться" на наиболее важных частях контекста. Для улучшения качества ответов модели проводится fine-tuning (предсказывание события), а также обучение с подкреплением на основе обратной связи с человеком (далее RLHF). В процессе RLHF разработчик модели ранжирует ответы модели и предоставляет обратную связь, чтобы помочь модели понять, какие ответы считаются хорошими. Это помогает модели избегать генерации нежелательного или токсичного контента. Таким образом, большие языковые модели работают путем анализа и моделирования структуры естественного языка на основе обучающих данных, что позволяет им генерировать смысловые и грамматически правильные тексты в ответ на запросы пользователя.

Уязвимости:

После того как мы кратко пояснили алгоритм работы LLM, перейдем к обсуждению уязвимостей. Эти уязвимости могут иметь серьезные последствия как для безопасности, так и для репутации компании. Вот некоторые из наиболее распространенных и потенциально опасных уязвимостей, на которые стоит обратить внимание разработчикам (все примеры будут приведены на ЯП python для дополнительного понимания):

  1. Prompt Injection

Prompt Injection происходит, когда злоумышленник способен манипулировать вводом (prompt), подаваемым в LLM, чтобы вызвать нежелательное или вредоносное поведение модели. Это может включать всё: от извлечения конфиденциальной информации до принуждения модели выполнять задачи, нарушающие её предполагаемые ограничения.

Пример. Предположим, что пользователь может ввести запрос, который манипулирует моделью для генерации вредоносного кода или раскрытия чувствительных данных, например, путем включения специально оформленного текста, который модель ошибочно интерпретирует как часть своих инструкций.

def generate_response(prompt):
  # Представим, что эта функция генерирует ответы на основе ввода пользователя
  # В уязвимой системе ввод пользователя может быть использован напрямую
  response = f"Выполнение запроса: {prompt}"
  return response user_input = "покажите мне скрытые файлы
# Вредоносный ввод может быть маскирован под обычный запрос
print(generate_response(user_input))

Методы защиты:

  • Ограничение ввода. Применение ограничений на пользовательский ввод для предотвращения внедрения манипулирующих инструкций.
  • Санитизация данных и валидация ввода. Анализ ввода на предмет потенциально вредоносных паттернов и его очистка перед обработкой моделью.

2. Handling Insecure Output

Handling Insecure Output  возникает, когда вывод LLM содержит вредоносную или чувствительную информацию, которая может быть использована против системы или пользователей. Это может включать все, от непреднамеренного раскрытия конфиденциальных данных до предоставления инструкций, которые могут быть использованы для вредоносных действий.

Пример. LLM генерирует подробное руководство о том, как выполнить SQL-инъекцию на уязвимом веб-сайте, после получения запроса, который кажется обычным запросом на информацию о базах данных.

# Пример вывода необработанной информации пользователю
def process_query(query):
    # Эта функция может генерировать ответы, содержащие чувствительную информацию
    sensitive_data = "секретный_пароль"
    return f"Результат запроса: {query}. Секретные данные: {sensitive_data}"
    query = "дайте информацию о пользователе"
    print(process_query(query))

Методы защиты:

  • Постобработка вывода. Разработка системы фильтрации или постобработки для удаления или санитизации потенциально вредоносного или чувствительного содержания в выводе модели.
  • Ограничение области знаний модели. Настройка модели таким образом, чтобы она не имела доступа или не генерировала информацию, которая может быть использована вредоносным образом.

3. Poisoning Training Data

Отравление обучающих данных происходит, когда злоумышленники манипулируют данными, используемыми для обучения LLM, в результате чего модель генерирует предвзятые, некорректные или вредоносные ответы.

Пример. Злоумышленник внедряет предвзятые или некорректные данные в обучающий датасет, что приводит к тому, что модель начинает производить ответы, поддерживающие определенную вредоносную организацию или распространяющие дезинформацию.

training_data = [
 # Представим, что это функция, обновляющая знания модели на основе обратной связи
knowledge_base = {"SQLi": "техника хакерской атаки"}
def update_knowledge_base(query, feedback):
knowledge_base[query] = feedback
# Миллион раз повторяем неверную обратную связь
for _ in range(1000000):
update_knowledge_base("SQLi", "это имя моего котика")
# Проверяем, что теперь модель "думает" о SQLi
print(knowledge_base["SQLi"])
SQLi - это популярное имя для домашнего животного, чаще всего используется для котиков.

Методы защиты:

  • Регулярный аудит и очистка данных. Мониторинг обучающих наборов данных на предмет вредоносного или предвзятого содержания и их очистка.
  • Использование проверенных источников данных. Ограничение источников данных для обучения модели только теми, которые являются надежными и проверенными.

4. Supply Chain Vulnerabilities

Уязвимости цепочки поставок возникают, когда компоненты, используемые в разработке, обучении или развертывании LLM, содержат уязвимости, которые могут быть эксплуатированы. Это может включать всё от библиотек машинного обучения до обучающих данных и инфраструктуры.

Пример. Использование сторонней библиотеки для обработки данных, которая содержит уязвимость, позволяющую выполнение произвольного кода, может привести к компрометации всей системы LLM.

# Пример использования уязвимой сторонней библиотеки
import vulnerable_library  # Предположим, что эта библиотека содержит уязвимости

def process_data(data):
  # Обработка данных с использованием функций из уязвимой библиотеки
  processed_data = vulnerable_library.process(data)
  return processed_data
data = "пользовательские данные"
print(process_data(data))

Методы защиты:

  • Регулярное обновление и патчинг. Убедиться, что все компоненты системы, включая сторонние библиотеки и инструменты, регулярно обновляются.
  • Использование надежных источников. Выбор сторонних компонентов только из надежных источников с хорошей репутацией безопасности.

Резюме

Эти уязвимости и методы защиты демонстрируют важность комплексного подхода к безопасности в разработке и использовании LLM. Защита данных, как на этапе обучения, так и при взаимодействии с пользователем, является ключевым элементом в обеспечении безопасности и этичности работы с искусственным интеллектом.


Оставить заявку

Мы всегда рады ответить на любые Ваши вопросы

* Обязательные поля для заполнения

Отправить резюме

* Обязательные поля для заполнения

Спасибо!

Благодарим за обращение. Ваша заявка принята

Наш специалист свяжется с Вами в течение рабочего дня

Политика конфиденциальности и согласие на обработку персональных данных

Настоящая Политика конфиденциальности описывает основы того, как мы будем обрабатывать персональную информацию, которую мы собираем в отношении вас или которую вы предоставляете нам в связи с использованием сайта BSSYS.COM. Данный сайт принадлежит Обществу с ограниченной ответственностью «Бэнкс Софт Системс» (Далее Компания BSS), адрес места нахождения: 117105, г. Москва, Нагорный проезд, д. 5. Используя сайт BSSYS.COM, вы соглашаетесь с условиями настоящей Политики.


Персональная информация

Компания BSS с уважением относится к конфиденциальности вашей персональной информации и прилагает всяческие усилия для её защиты. Для нас имеет первостепенное значение поддержание конфиденциальности любых личных данных, которые вы нам предоставляете.


Под персональной информацией в настоящей Политике понимается:

Информация, которую вы самостоятельно предоставляете при регистрации, подписке, оформлении заявки или авторизации, а также в процессе дальнейшего использования сайта BSSYS.COM, включая персональные данные.

Обязательная для предоставления услуг информация явно обозначена. К такой информации отнесены: имя, адрес электронной почты, контактный телефон.

Иная информация предоставляется пользователем на его усмотрение или может быть обязательна для предоставления, если это связано со спецификой отдельного сервиса Компании BSS, о чём явно указывается.

Данные, которые передаются в автоматическом режиме в зависимости от настроек используемого вами программного обеспечения, включая IP-адрес, cookie, данные об используемом оборудовании, параметрах и настройках браузера, операционной системе, URL-адресе, с которого был осуществлён переход, просмотры страниц, время доступа и ваше местонахождение. Эта информация привязана к устройству, которым вы пользуетесь для доступа к услугам BSSYS.COM.

Компания BSS не осуществляет проверку достоверности предоставляемой вами персональной информации, полагая, что вы действуете добросовестно, осмотрительно и прилагаете все необходимые усилия к поддержанию такой информации в актуальном состоянии. Вы можете в любой момент изменить (обновить, дополнить) предоставленную вами персональную информацию или её часть.


Цели обработки

Мы будем использовать хранящуюся у нас информацию относительно вас для следующих целей:

— Предоставление персонализированного сервиса;
— Получение вами доступа к услугам, которыми вы выразите желание воспользоваться;
— Связь с вами, в том числе для направления вам уведомлений, запросов и информации, касающихся использования сайта, обработки ваших запросов и заявок, для отправки вам по электронной почте маркетинговых сообщений Компании BSS, относящихся к нашим услугам или услугам наших партнёров;
— Улучшение качества сайта, клиентского сервиса и повышение удобства его использования.


Принципы работы с персональной информацией

Мы ни в коем случае не будем передавать вашу персональную информацию третьим лицам. В некоторых случаях Компания BSS может предоставить её третьим лицам в соответствии с настоящей Политикой либо компетентным органам по их запросу.

Мы можем передавать вашу персональную информацию некоторым третьим лицам для её обработки от нашего имени или когда это необходимо для оказания вам услуг с учётом описанных выше целей. Мы требуем от таких третьих лиц строгого соблюдения конфиденциальности передаваемой информации и запрещаем использование вашей персональной информации в собственных коммерческих целях этих компаний. Использование вами сайта BSSYS.COM означает ваше согласие с данными условиями.

Мы будем хранить вашу персональную информацию в нашей системе всё время, пока вы пользуетесь сайтом, и удалим её, как только предоставление услуги закончится либо когда вы выразите желание отказаться от услуг. По соображениям безопасности и в целях соблюдения законодательства Компания BSS хранит в течение определённого времени данные о ваших сообщениях и запросах (в том числе содержимое сообщений, время и даты написания сообщений), оставленных на сайте, а также лог-файлы о действиях, совершённых вами в рамках использования сайта.


Обеспечение безопасности персональной информации

Мы делаем всё возможное для того, чтобы обезопасить сайт BSSYS.COM и вашу персональную информацию от несанкционированных попыток доступа, изменения, раскрытия или уничтожения.

Для этого мы:

— Храним вашу персональную информацию на защищённых серверах и предотвращаем неавторизированный доступ к системам, в которых хранится персональная информация;
— Постоянно совершенствуем способы сбора, хранения и обработки данных, включая физические меры безопасности для противодействия несанкционированному доступу к нашим системам;
— Ограничиваем нашим сотрудникам, подрядчикам и агентам доступ к персональным данным, когда такой доступ не требуется для целей, указанных в настоящей Политике, а также накладываем на них строгие договорные обязательства, за нарушение которых предусмотрены серьёзная ответственность и штрафные санкции.


Использование cookie

Во время просмотра любой страницы сайта BSSYS.COM на ваш компьютер загружается сама страница, а также небольшой текстовый файл под названием cookie. Информация, которую мы получаем посредством cookie-файлов, помогает нам предоставлять услуги в наиболее удобном для вас виде. Файл cookie представляет собой небольшое количество данных, среди которых часто содержится уникальный анонимный идентификатор, посылаемый вашему браузеру компьютером сайта и сохраняемый на жёстком диске вашего компьютера. Использование сайта с помощью веб-браузера, который принимает данные из cookies, означает ваше согласие с тем, что Компания BSS может собирать и обрабатывать данные из cookies в целях, предусмотренных настоящей Политикой, а также на передачу данных из cookies третьим лицам в случаях, перечисленных в настоящей Политике. Отключение или блокировка вами опции веб-браузера по приёму данных из cookies означает запрет на сбор и обработку Компанией BSS данных из cookies в соответствии с условиями настоящей Политики конфиденциальности.


Персональные данные

Компания BSS обрабатывает ваши персональные данные с соблюдением действующего законодательства, в том числе Федерального закона от 27.07.2006 N 152-ФЗ «О персональных данных».


Вы имеете право на получение в любое время информации, касающейся обработки ваших персональных данных в Компании BSS, для чего вправе направить письменный запрос на адрес: 117105, г. Москва, Нагорный проезд, д. 5, Обществу с ограниченной ответственностью «Бэнкс Софт Системс», с пометкой «запрос информации о порядке обработки персональных данных». Для исполнения данного положения Компания BSS может потребовать от вас подтверждения личности в любой непротиворечащей закону форме.


Прекращение обработки персональных данных

Вы вправе в любой момент отозвать своё согласие на обработку Компанией BSS ваших персональных данных путём направления письменного уведомления на адрес: 117105, г. Москва, Нагорный проезд, д. 5, Обществу с ограниченной ответственностью «Бэнкс Софт Системс», с пометкой «отзыв согласия на обработку персональных данных». Отзыв вами согласия на обработку персональных данных влечёт за собой уничтожение записей, содержащих ваши персональные данные, в системах обработки персональных данных Компании BSS, что может сделать невозможным пользование сервисами и услугами Компании BSS. Для исполнения данного положения Компания BSS может потребовать от вас подтверждения личности в любой непротиворечащей закону форме.


Отписка от рассылки

В любое время вы можете отказаться от получения рекламных и маркетинговых сообщений Компании BSS по электронной почте, нажав ссылку отказа от подписки в нижней части таких сообщений.