FaceHugger: уязвимости в Diffusers обходят защиту trust_remote_code

· Безопасность
Исследователи Zafran Labs раскрыли три уязвимости в библиотеке Hugging Face Diffusers, позволяющие вредоносным репозиториям моделей незаметно выполнять произвольный код на машине, которая их загружает.

cover.svg

Компания Zafran Labs сообщила о трёх уязвимостях высокой степени опасности в библиотеке Diffusers от Hugging Face. Специально подготовленный репозиторий модели может тайно выполнить произвольный код на машине, которая его загружает, — а значит, под угрозой оказывается вся цепочка поставок в области искусственного интеллекта. Набор проблем получил общее название FaceHugger.

Diffusers — это Python-библиотека с предобученными диффузионными моделями для генерации изображений, видео и звука. По данным pepy.tech, в июле 2026 года пакет скачали более 8,1 млн раз. Учитывая, что Hugging Face превратился в «GitHub эпохи ИИ» и глубоко встроен в производственные конвейеры, CI/CD-системы и контейнерные образы, уязвимость в такой библиотеке открывает атакующему широкий доступ.

Обход главного предохранителя

Ключевой параметр trust_remote_code как раз и предназначен для того, чтобы блокировать выполнение непроверенного пользовательского кода при вызове from_pretrained(). По умолчанию он выключен. Однако, как объясняют исследователи Галь Забан и Идо Шани, проверка доверия происходит только на первом этапе загрузки. Любой способ подсунуть загрузчику код, которого «страж» не увидел, обходит защиту.

В основе всех вариантов — классическая ошибка TOCTOU (time-of-check to time-of-use): скачивание модели устроено не как единая атомарная операция, а как два последовательных HTTP-запроса, тогда как проверка выполняется лишь для первого из них.

Выявлены три уязвимости:

  • CVE-2026-44827 (CVSS 8.8) — внедрение кода через поток custom_pipeline с помощью подготовленного пайплайна с именем None.py, срабатывающее даже при trust_remote_code=False.
  • CVE-2026-45804 (CVSS 7.5) — состояние гонки: конфигурацию репозитория подменяют между вызовами hf_hub_download и snapshot_download.
  • CVE-2026-44513 (CVSS 8.8) — ещё одно внедрение кода через custom_pipeline, обходящее trust_remote_code=False.

Затронуты все, кто вызывает DiffusionPipeline.from_pretrained с пользовательскими пайплайнами.

Что делать

После ответственного раскрытия проблемы устранены в версии Diffusers 0.38.0, вышедшей в начале мая 2026 года. Если немедленно обновиться нельзя, разработчики советуют работать только с полностью доверенными и проверенными источниками, не указывать custom_pipeline= на посторонний репозиторий, не прочитав его pipeline.py, и перед загрузкой локального снимка искать в нём неожиданные *.py-файлы — особенно в подкаталогах компонентов вроде unet/ и scheduler/.

Основная мысль исследователей проста: артефакты из репозиториев ИИ часто воспринимают как пассивные данные, тогда как конфигурационные файлы, загрузчики и пользовательский код пайплайнов легко превращаются в исполняемый код. Рутинная загрузка модели при этом становится вектором первоначального доступа, и репозитории моделей стоит рассматривать как заведомо недоверенный код.


Источник: The Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.