NullifAI: как злоумышленники маскируют вредоносный код в ML-моделях

Специалисты по кибербезопасности выявили две вредоносные модели машинного обучения (ML) на платформе Hugging Face. Они использовали необычный метод маскировки через “сломанные” файлы Pickle. Такой подход позволял им обходить защитные механизмы, предназначенные для выявления вредоносных моделей.

Исследователи ReversingLabs сообщили, что файлы Pickle, извлечённые из архивов PyTorch, содержали вредоносный Python-код в самом начале. В обоих случаях вредоносная нагрузка представляла собой обратную оболочку с учётом платформы (Platform-Aware Reverse Shell), подключенную к жёстко заданному IP-адресу.

Метод получил название nullifAI, так как направлен на обход защитных механизмов, анализирующих загружаемые модели. Опасные репозитории на Hugging Face были идентифицированы как:

  • glockr1/ballr7
  • who-r-u0000/0000000000000000000000000000000000000

Предполагается, что эти модели являются скорее доказательством концепции (PoC), чем частью активной атаки на цепочку поставок.

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

Две вредоносные модели были сохранены в формате PyTorch, который, по сути, представляет собой сжатый Pickle-файл. Однако вместо стандартного ZIP-архива, применяемого PyTorch, злоумышленники использовали формат 7z. Это позволило моделям обойти систему сканирования Picklescan, которая используется Hugging Face для выявления подозрительных файлов.

Файл Pickle в этих моделях прерывает процесс десериализации сразу после выполнения вредоносного кода, что приводит к ошибке при разборе объекта. Однако анализ показал, что такие “сломанные” файлы всё же могут частично десериализоваться, благодаря особенностям работы Picklescan.

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

Этот случай ещё раз демонстрирует риски использования формата Pickle для распространения моделей машинного обучения. Несмотря на защитные меры, реализованные Hugging Face, злоумышленники продолжают находить способы обхода. Внедрение более строгих механизмов проверки и анализа кода остаётся важной задачей для платформ, работающих с ML-моделями.

Public Release.