Уязвимость высокого уровня критичности в Hugging Face Transformers позволяет злоумышленникам скомпрометировать системы, использующие популярную библиотеку Python для тестирования и запуска моделей ИИ. Дефект затрагивает версии библиотеки, которые продолжают активно загружаться, и появляется в то время, когда злоумышленники все чаще нацеливаются на цепочку поставок ИИ, в том числе через вредоносные модели, размещенные на платформе Hugging Face.
Эксплойт этой уязвимости включает добавление безобидно выглядящего параметра с именем _attn_implementation_internal в удаленные конфигурационные файлы моделей на Hugging Face и обход флага trust_remote_code=false, который обычно предотвращает выполнение удаленного кода, сопровождающего модели.
«Вредоносное поле использует имя, начинающееся с подчеркивания, которое выглядит как внутренняя деталь реализации — такой тип полей, которыми полны конфигурационные файлы», — заявили исследователи из Pluto Security, обнаружившие уязвимость, в своем отчете. «Нет никаких предупреждений во время выполнения, никаких запросов на согласие, никаких необычных записей в журналах».
Библиотека Hugging Face Transformers позволяет Python-разработчикам развертывать более 1 миллиона вариантов моделей машинного обучения, размещенных на Hugging Face, на своем локальном оборудовании или облачных инстансах. Она используется во многих корпоративных средах и конвейерах CI/CD для тестирования моделей, предварительно обученных для различных задач, и их донастройки с использованием проприетарных данных.
Пакет Hugging Face Transformers PyPI загружается более 146 миллионов раз в месяц, а общее число установок составляет 2,2 миллиарда на сегодняшний день. Проект также является одним из самых высоко оцененных репозиториев на GitHub с более чем 161 тысячей звезд, поэтому радиус поражения уязвимости удаленного выполнения кода (RCE) огромен.
Этот ранее не раскрывавшийся дефект, теперь отслеживаемый как CVE-2026-4372, был незаметно исправлен в Transformers 5.3.0, выпущенной 3 марта, но он затрагивает все версии, выпущенные с августа, начиная с 4.56.0. Уязвимые версии продолжают загружаться 7–8 миллионов раз в неделю и составляют около четверти еженедельных установок.
Пользовательские «attention»-ядра обходят защиту от RCE
Модели ИИ, размещенные на Hugging Face, могут содержать пользовательский код Python, что может представлять серьезный риск безопасности при автоматической загрузке и выполнении вместе с моделью. В прошлом эта возможность использовалась злоумышленниками, поэтому в конфигурации был добавлен параметр trust_remote_code:. Когда он установлен в false, он должен давать разработчикам гарантию того, что дополнительный код не будет выполняться автоматически.
Однако в марте прошлого года Hugging Face добавила функцию под названием Hub Kernels, которая позволяет пользователям размещать пользовательские скомпилированные attention-ядра. Эти ядра повышают производительность моделей при загрузке на GPU и требуют дополнительный пакет под названием kernels.
Наличие этого пакета на машине требуется для использования этой уязвимости, что на первый взгляд является ограничивающим фактором. Однако, хотя это и необязательная зависимость, наличие установленного пакета kernels не является редкостью, особенно потому, что большинство пользователей, запускающих локальные модели ИИ, хотят воспользоваться ускорением GPU и устанавливают Transformers со всеми «дополнительными» пакетами.
«Пользователи, работающие с инференсом, ускоренным GPU — возможно, самые ценные цели — с наибольшей вероятностью имеют его установленным», — заявили исследователи. «Корпоративные ML-платформы и GPU-кластеры обычно устанавливают все необязательные зависимости для максимального использования оборудования».
Уязвимость является результатом трех отдельных проектных решений, принятых в коде, которые в совокупности создают риск незаметного RCE. Во-первых, когда вызывается загрузка модели с помощью AutoModelForCausalLM.from_pretrained(“model-name”), библиотека загружает конфигурацию модели, веса и токенизатор из хаба, собирает правильную архитектуру и возвращает готовой к использованию модель приложению.
Код, который анализирует файл config.json модели, использует функцию под названием setattr, которая анализирует каждую пару ключ-значение в файле и загружает ее в объект конфигурации, но не различает параметры, настраиваемые пользователем, и внутренние параметры, начинающиеся с символа _. Такие внутренние параметры никогда не должны присутствовать в конфигурации, предоставленной пользователем, поскольку они не предназначены для изменения разработчиками.
Одним из таких внутренних параметров является _attn_implementation_internal, который используется для управления тем, какую реализацию механизма внимания использует модель: Flash Attention, SDPA или стандартную реализацию eager.
Кроме того, компонент hub_kernels.py проверяет значение этого параметра, и если оно соответствует шаблону, совпадающему с двумя строками, разделенными /, он предполагает, что это определение владельца/репозитория из Kernels Hub. Затем код загружает ядро из указанного репозитория и выполняет его.
«Никакого песочницы. Никакой цифровой подписи. Никакой проверки целостности. Никаких запросов к пользователю», — заявили исследователи. «Просто необработанный импорт любого Python-кода, находящегося в репозитории злоумышленника — включая все в __init__.py, который выполняется автоматически при импорте».
В результате этих трех независимых проблем — нефильтрованного setattr, незащищенного внутреннего атрибута и незащищенного загрузчика ядер — эксплуатация становится тривиальной: опубликовать привлекательную модель с конфигурацией, включающей _attn_implementation_internal, установленный в attacker-repo/malicious-kernel.
Атаки на цепочки поставок через вредоносные модели ИИ учащаются
Это не необычная атака. Вредоносные модели постоянно загружаются на Hugging Face и могут успешно обманывать пользователей. В прошлом месяце вредоносный репозиторий Hugging Face, выдававший себя за новую версию модели Privacy Filter от OpenAI, за 18 часов достиг №1 в списке популярных на платформе и был загружен 244 000 раз. Код модели содержал вредоносное ПО для кражи данных (infostealer) для Windows.
В прошлом году исследователи показали, как злоумышленники могут скрывать вредоносный код внутри файлов Pickle Python, формата, который обычно используется для распространения моделей ИИ.
Эта уязвимость в Transformers — не первая, которая позволяет удаленное выполнение кода через злонамеренно созданные модели ИИ. В прошлом месяце исследователи из компании безопасности HiddenLayer раскрыли уязвимость RCE в ChromaDB, которая позволяла неаутентифицированным удаленным злоумышленникам обманом заставить серверы Chroma выполнять вредоносный код из конфигураций моделей, размещенных на Hugging Face.
Ранее в том же месяце те же исследователи показали, как достичь удаленного выполнения кода, внеся незначительные изменения в файл tokenizer.json модели, который используется для сопоставления идентификаторов токенов со словами и символами, создавая алфавит, который модель использует для генерации своих результатов.
Меры по смягчению последствий
Поскольку количество таких атак на цепочки поставок растет, наличие проверок происхождения моделей становится очень важным для организаций, экспериментирующих с ИИ и машинным обучением.
Исследовательская группа Cisco по ИИ недавно выпустила инструмент с открытым исходным кодом под названием Model Provenance Kit, который использует отпечатки весов моделей, токенизаторов и метаданных архитектуры для определения того, происходит ли модель машинного обучения от одной из более чем 45 известных базовых семейств моделей от более чем 20 доверенных издателей, включая ведущие лаборатории ИИ.
Тем не менее, исследователи Pluto Security советуют организациям рассматривать API для загрузки моделей ИИ и десериализации конфигураций в ML-фреймворках и библиотеках как поверхности для выполнения кода, независимо от предоставляемых ими безопасных флагов.
Это означает, что загрузка моделей должна осуществляться в песочнице и изолироваться внутри контролируемых контейнеров, которые не имеют доступа к учетным данным хоста, исходящему сетевому доступу и обширным разрешениям файловой системы. Конфигурационные файлы также должны сканироваться перед загрузкой и проверяться на наличие неожиданных полей, включая те, что начинаются с подчеркивания.
Пользователям Transformers следует немедленно обновиться до версии 5.3.0 и проверить наличие _attn_implementation_internal в любых кэшированных или загруженных файлах config.json, чтобы определить, не стали ли они целью атаки.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Lucian Constantin




