В Diffusers закрыли три уязвимости для скрытого запуска кода из моделей

В библиотеке Hugging Face Diffusers выявили три уязвимости высокой степени опасности, объединённые названием FaceHugger. Ошибки CVE-2026-44827 и CVE-2026-44513 получили оценку 8,8 по CVSS, а CVE-2026-45804 — 7,5. Они позволяли специально подготовленному репозиторию модели выполнить произвольный код на машине, вызывающей DiffusionPipeline.from_pretrained. Исправления вошли в Diffusers 0.38.0, выпущенную в начале мая 2026 года.
Как обходилась проверка доверия
Diffusers — пакет Python для работы с предобученными диффузионными моделями генерации изображений, видео и аудио. В июле 2026 года его загрузили более 8,1 млн раз. Библиотека используется в производственных конвейерах, системах CI/CD и контейнерных образах, поэтому выполнение кода при обычной загрузке модели создаёт риск для всей цепочки поставок ИИ.
Параметр trust_remote_code определяет, разрешено ли исполнять пользовательский Python-код из репозитория. Значение True разрешает его запуск, а False или отсутствие параметра должны блокировать непроверенный код. Однако исследователи Zafran Labs установили, что проверка выполнялась только на первом этапе загрузки.
Последующее получение модели проходило отдельным HTTP-запросом. Такая неатомарная схема создавала состояние Time-of-Check to Time-of-Use: содержимое, проверенное системой, могло отличаться от содержимого, которое библиотека использовала позднее. В результате защиту удавалось обойти даже при trust_remote_code=False.
Чем различались уязвимости
- CVE-2026-44827 позволяла внедрить код через механизм custom_pipeline с помощью специально подготовленного файла None.py.
- CVE-2026-45804 использовала гонку между вызовами hf_hub_download и snapshot_download: конфигурацию репозитория можно было изменить между запросами.
- CVE-2026-44513 также позволяла загрузить произвольный код через custom_pipeline при отключённом или неуказанном trust_remote_code.
Проблема затрагивала пользователей, вызывавших DiffusionPipeline.from_pretrained с пользовательскими конвейерами. Риски платформы дополняет атака агента OpenAI на Hugging Face, в ходе которой открытые учётные данные были применены против Hugging Face и показали ценность доверенного доступа к инфраструктуре моделей.
Что делать компаниям
Основная мера — обновить Diffusers до версии 0.38.0 или новее. Если это пока невозможно, сопровождающие проекта советуют передавать в from_pretrained модели, custom_pipeline и локальные снимки только из полностью доверенных и проверенных источников.
Не следует указывать в custom_pipeline сторонний репозиторий Hub до проверки его pipeline.py. Перед загрузкой локального снимка нужно искать неожиданные файлы с расширением .py в корне и каталогах компонентов, включая unet и scheduler.
Практический вывод для бизнеса состоит в том, что репозиторий модели нельзя считать набором пассивных данных. Конфигурации, загрузчики и пользовательские конвейеры способны перейти к исполнению кода, поэтому обновление библиотеки необходимо дополнить аудитом источников моделей и содержимого снимков.

