Разкрити са три уязвимости с висока степен на сериозност в библиотеката Diffusers на Hugging Face, които могат да позволят на специално създадени хранилища за модели тихомълком да изпълняват произволен код на машини, които ги зареждат, излагайки на риск сигурността на веригата за доставки в сферата на изкуствения интелект (ИИ).

„Тези уязвимости заобикалят trust_remote_code – защитния механизъм, предназначен да спре изпълнението на непрегледан код в процеса на зареждане на персонализирани конвейери“, обясняват изследователите от Zafran Labs Гал Забан и Идо Шани в анализ, публикуван миналата седмица. Слабостите са обединени под общото име FaceHugger.

Тъй като Hugging Face се превръща в „GitHub на ерата на изкуствения интелект“ и нейните библиотеки и хранилища са широко разпространени в корпоративни среди, уязвимостите в библиотеки като Diffusers могат да осигурят на атакуващите широк достъп поради начина, по който библиотеката е интегрирана в производствените конвейери, CI/CD системите и контейнерните изображения.

Diffusers е Python пакет, който служи като библиотека с водещи предварително обучени дифузионни модели за генериране на видео, изображения и аудио. Според статистически данни на pepy.tech, пакетът е изтеглен над 8,1 милиона пъти през юли 2026 г. Една от ключовите възможности на библиотеката е да зарежда локално модел от централното хранилище на Hugging Face чрез DiffusionPipeline API, което от своя страна използва конфигурационен файл за инициализиране на конкретни класове на конвейери и компоненти, заедно с персонализиран код за конвейера.

Параметърът „trust_remote_code“ в Diffusers е защитна мярка, която контролира дали на персонализирания Python код, хостван в хранилището за модели, е разрешено да се изпълнява по време на зареждане с „from_pretrained()“. Задаването му на „True“ позволява изпълнението на персонализиран код, докато стойност „False“ или пропускането му блокира изпълнението на непроверен код.

„Основната причина за всички варианти на отдалечено изпълнение на код (RCE) [...] е, че проверката за доверие се извършва изцяло в първата фаза“, обясняват от Zafran. „Следователно всеки метод, който кара зареждащия модул да види персонализиран код, който защитната врата не е засекла, позволява заобикаляне на механизма trust_remote_code.“

Всеки вариант е проследен до уязвимост от тип „време на проверка към време на използване“ (TOCTOU), като изтеглянето на модела е проектирано като две последователни, неатомарни HTTP заявки вместо като „една атомарна операция“, а защитната врата за сигурност „trust_remote_code“ е конфигурирана да работи само срещу първата заявка.

Уязвимостите са следните:

  • CVE-2026-44827 (CVSS оценка: 8.8) – Уязвимост за инжектиране на код, която позволява зареждане на произволен код чрез процеса custom_pipeline от централно хранилище посредством изработен конвейер с име „None.py“, въпреки подаването на trust_remote_code=False (или пропускането му, което е стойността по подразбиране).
  • CVE-2026-45804 (CVSS оценка: 7.5) – Уязвимост от тип „състояние на надпревара“ (race condition), която позволява въвеждане на произволен код в хранилище чрез модифициране на конфигурацията между HTTP повикванията hf_hub_download и snapshot_download към централното хранилище, което води до изпълнение на код.
  • CVE-2026-44513 (CVSS оценка: 8.8) – Уязвимост за инжектиране на код, която позволява зареждане на произволен код чрез процеса custom_pipeline от централно хранилище, въпреки подаването на trust_remote_code=False (или пропускането му).

След отговорно оповестяване уязвимостите бяха коригирани в Diffusers версия 0.38.0, пусната в началото на май 2026 г. Всеки потребител, който извиква „DiffusionPipeline.from_pretrained“ с персонализирани конвейери, е засегнат.

„Основният проблем е, че артефактите, извлечени от ИИ хранилища, често се третират като пасивни данни, когато конфигурационните файлове, зареждащите модули и персонализираният код на конвейера могат тихо да се превърнат в изпълним код и да превърнат рутинното зареждане на модел във вектор за първоначален достъп“, добавят изследователите.

Ако незабавното инсталиране на корекции за сигурност не е възможно, поддържащите проекта препоръчват следните алтернативни решения:

  • Извиквайте from_pretrained само с pretrained_model_name_or_path, custom_pipeline и локални директории за моментни снимки (snapshots) от напълно доверени източници, които са били одитирани.
  • Не подавайте custom_pipeline=, сочещ към централно хранилище, различно от основното pretrained_model_name_or_path, преди да прочетете неговия pipeline.py.
  • Преди да извикате from_pretrained за локална моментна снимка, проверете я за неочаквани *.py файлове, особено в поддиректориите на компонентите (unet/, scheduler/ и др.) и в корена на моментната снимка.

„Тези уязвимости подчертават критичната нужда хранилищата за ИИ модели да се третират като недоверен код, особено на заден план на нарастващата зависимост на предприятията от платформи като Hugging Face“, казват от Zafran. „Едно рутинно изтегляне на модел може лесно да се превърне във вектор за изпълнение на произволен код, ако границите на сигурността като trust_remote_code бъдат заобиколени.“