Может ли модель машинного обучения содержать вредоносный код?

Вопрос или проблема

С ростом интереса к машинному обучению становится обычным делом для людей без опыта в области научных данных, таких как я, брать модели из таких источников, как HuggingFace, и запускать их.

Теперь мое понимание моделей довольно ограниченно. Это огромный набор кода на C/Python в формате, похожем на pickle?

С точки зрения наивного «конечного пользователя», я фактически беру черный ящик и запускаю его на своем компьютере. Исходя из этого, возможно ли встроить кучу вредоносного кода в модель?

Модель машинного обучения — это набор параметров для сложных функций (архитектура модели). То, что вы запускаете, — это фактическая реализация этих функций. Кроме того, вам нужен код, который создает признаки для модели из некоторого входа и который создает полезный вывод (например, изображение) из того, что производит модель.

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

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

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

Модель машинного обучения — это данные о параметрах, используемых в ее архитектуре, и в зависимости от формата файла, инструкции по коду о том, как десериализовать ее (как загрузить в память).

Так что да, модель может содержать вредоносный код. Например, если она хранится в формате pickle.
https://blog.trailofbits.com/2024/06/11/exploiting-ml-models-with-pickle-file-attacks-part-1/

Вы можете увидеть здесь блокнот, демонстрирующий внедрение произвольного кода Python в модель, так что он выполняется сразу после того, как модель загружается в память
https://colab.research.google.com/drive/1fiHsmnRu7CamoPdaT0UuzBuwaotIWpdi

Репозитории моделей, такие как Huggingface, помечают модели, хранящиеся в небезопасных форматах, с предостерегающим сообщением.

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

Она может «галлюцинировать» библиотеку, которой изначально не существует, но со временем кто-то заметит повторяющееся предложение и зарегистрирует ее с этим точным именем, включая в нее вредоносный код.
https://www.theregister.com/2024/03/28/ai_bots_hallucinate_software_packages/

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

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

Ответ или решение

Конечно, модель машинного обучения действительно может содержать вредоносный код. Давайте разберем это более детально.

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

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

  1. Только параметры модели: В этом случае вы загружаете только параметры, и вам потребуется реализация модели на вашем локальном компьютере. Если ваш локальный код содержит уязвимости, злоумышленник может использовать параметры, чтобы активировать эти уязвимости. Риск аналогичен запуску любого стороннего программного обеспечения из ненадежного источника.

  2. Код и параметры: Если загружается архив, который содержит как код, так и параметры, в этом случае модель может содержать непосредственно вредоносный код. Это представляет риск, подобный обработке данных из ненадежного источника в приложении, где могут быть уязвимости.

Форматы хранения и уязвимости

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

Существуют примеры атак, при которых вредоносный код может быть внедрен в модель, и его выполнение происходит при загрузке в Python. Наличие таких уязвимостей делает использование незащищенных форматов хранения, таких как pickle, особенно рискованным.

Защита от вредоносного кода

Чтобы минимизировать риск, следует идентифицировать и применять подходящие стратегии защиты:

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

  2. Оценка источников: Всегда исследуйте источник модели. Модели из репозиториев с хорошей репутацией (например, Hugging Face) могут иметь встроенные предупреждения о наличии небезопасных форматов файлов.

  3. Проверка выводимых данных: Обеспечьте контроль со стороны специалиста, который будет анализировать результаты, полученные с помощью модели. Это поможет предотвратить возможные последствия от вывода поддельных или вредоносных данных.

  4. Контролируйте алгоритмы генерации кода: Также следует учитывать риски, связанные с моделями, способными генерировать код. Подобные модели, даже если они работают с более безопасными форматами хранения (такими как SafeTensor), могут "галлюцинировать" несуществующие библиотеки или генерировать подозрительные предложения.

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...