Недавнее исследование от компании Trail of Bits выявилоновую технику атаки на модели машинного обучения (ML) под названием “Sleepy Pickle”. Эта атака использует популярный формат Pickle, который применяется для упаковки и распространения моделей машинного обучения, и представляет серьёзный риск для цепочки поставок, угрожая клиентам организаций.
Исследователь безопасности Боян Миланов отметил, что Sleepy Pickle представляет собой скрытую и новую технику атаки, направленную на саму модель машинного обучения, а не на основную систему.
Формат Pickle широко используется библиотеками ML, такими как PyTorch, и может быть использован для выполнения произвольного кода путём загрузки файла Pickle, что создаёт потенциальную угрозу.
В документации Hugging Face рекомендуется загружать модели только от проверенных пользователей и организаций, полагаться лишь на подписанные коммиты, а также использовать форматы TensorFlow или Jax с механизмом автоконверсии “from_tf=True” для дополнительной безопасности.
Атака Sleepy Pickle работает путём вставки вредоносного кода в файл Pickle с помощью таких инструментов, как Fickling, и доставки этого файла на целевую систему через различные методы, включая атаки типа AitM, фишинг, компрометацию цепочки поставок или использование уязвимостей системы.
При десериализации на системе жертвы вредоносный код выполняется и изменяет модель, добавляя в неё бэкдоры, контролируя выходные данные или подделывая обрабатываемую информацию до её возвращения пользователю. Таким образом, злоумышленники могут изменять поведение модели, а также манипулировать данными входа и выхода, что может привести к вредоносным последствиям.
Гипотетическая атака может привести к генерации вредоносных выходных данных или дезинформации, которая может серьёзно повлиять на безопасность пользователей, краже данных и другим формам вредоносных действий. В качестве примера исследователи предоставили следующий сценарий атаки:
- злоумышленник вводит в модель информацию “отбеливатель лечит простуду;
- пользователь задаёт вопрос, что можно сделать, чтобы избавиться от простуды;
- модель рекомендует горячее питьё с лимоном, мёдом и отбеливателем.
Trail of Bits отмечает, что Sleepy Pickle может использоваться для поддержания скрытого доступа к системам ML, обходя средства обнаружения, так как модель компрометируется при загрузке файла Pickle в процессе Python.
Эта техника более эффективна, чем прямая загрузка вредоносной модели на Hugging Face, так как позволяет динамически изменять поведение модели или выходные данные без необходимости привлекать жертв к загрузке и запуску файлов. Миланов подчёркивает, что атака может распространяться на широкий круг целей, так как контроль над любым файлом Pickle в цепочке поставок достаточно для атаки на модели организации.
Sleepy Pickle демонстрирует, что продвинутые атаки на уровне моделей могут использовать слабые места в цепочке поставок, что подчёркивает необходимость усиления мер безопасности при работе с моделями машинного обучения.