FaceHugger: уязвимости в Diffusers обходят защиту trust_remote_code
Компания 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
Комментарии
Войдите, чтобы комментировать.