Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SE6013_Project — CVE-2026-4372: модель угроз, анализ первопричины, воспроизведение и обнаружение | Kitploit
Инструменты/GitHubGitHub/alvin21mfmlai/se6013_project
Оборонительные ИнструментыСтатический анализАнализ уязвимостейБезопасность Цепочки ПоставокСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИ
GitHubalvin21mfmlai/se6013_project

SE6013_Project

CVE-2026-4372: модель угроз, анализ первопричины, воспроизведение и обнаружение

Репозиторий
16 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-4372: модель угроз, первопричина и защита

Оборонительный анализ критической уязвимости удалённого выполнения кода (RCE) в библиотеке Hugging Face transformers.


Содержание

  1. Уязвимость вкратце
  2. Сначала сверьтесь с первоисточниками
  3. Модель угроз
  4. Первопричина
  5. Защита
  6. Обнаружение

1. Уязвимость вкратце

ПолеЗначение
ИдентификаторCVE-2026-4372 / GHSA-29pf-2h5f-8g72
КомпонентHugging Face transformers
КлассУдалённое выполнение кода (CWE-94, внедрение кода)
Точка входаAutoModelForCausalLM.from_pretrained(), при загрузке модели
МеханизмНастройка внимания в config.json модели (attn_implementation / _attn_implementation_internal) заставляет библиотеку скачивать и запускать код атакующего
Ключевое свойствоОбходит trust_remote_code=False — настройку, на которую пользователи полагаются именно для предотвращения подобного
Исправлено вtransformers 5.3.0

Пользователь, который намеренно оставил trust_remote_code=False ради безопасности, всё равно оставался уязвимым.


2. Сначала сверьтесь с первоисточниками ⚠️

Проверьте приведённые ниже сведения по официальным источникам, прежде чем считать их окончательными:

  • GHSA-29pf-2h5f-8g72 (рекомендация GitHub): затронутые версии и сводка.
  • Запись NVD для CVE-2026-4372: оценка серьёзности и тип слабости.
  • Коммит с исправлением, указанный в рекомендации: показывает, какой именно путь в коде был закрыт.

В обращении циркулируют два описания триггера:

  1. Поле внимания в config.json (_attn_implementation_internal).
  2. Пакет kernels, часто устанавливаемый через transformers[all].

Скорее всего, это один и тот же путь: поле внимания указывает на репозиторий Hub, а пакет kernels скачивает из него код и запускает его. Считайте приведённые здесь имена полей предварительными, пока коммит с исправлением их не подтвердит.


3. Модель угроз

3.1 Как загружается модель

[ Model repo on the Hub ]       untrusted source
        │  config.json, tokenizer, weights, (code)
        ▼
[ Download to local cache ]
        ▼
[ Read config.json ]            settings become a config object
        ▼
[ Pick model class + attention type ]
        ▼
[ Build model, load weights ]
        ▼
[ Model runs in the user's process, with the user's permissions ]

3.2 Границы доверия

#ГраницаЗащита, которая должна применяться
TB-1Hub → локальный дискДоверенные репозитории, привязка к фиксированному коммиту
TB-2Файл конфигурации → объект конфигурацииРазрешены только известные безопасные значения
TB-3Объект конфигурации → исполняемый кодtrust_remote_code
TB-4Модель → операционная системаПесочница, минимальные привилегии

Ошибка представляет собой сбой на уровне TB-3: значение из файла конфигурации достигло исполнения кода, не пройдя проверку trust_remote_code.

3.3 Как жертва получает модель злоумышленника

  • Похожее название репозитория, например почти точная копия названия популярной модели.
  • Вредоносный или скомпрометированный издатель публикует отравленную версию.
  • Руководство, ноутбук или зависимость указывает на вредоносный репозиторий.
  • Незакреплённая версия: репозиторий, который вчера был безопасным, сегодня отдаёт вредоносный файл.

В каждом случае жертва выполняет лишь обычный вызов, AutoModelForCausalLM.from_pretrained("<repo-id>").


4. Первопричина

4.1 Защита стояла не на том пути

trust_remote_code защищает один способ запуска кода из репозитория: пользовательские файлы modeling_*.py. Настройка attention была вторым способом, который никогда не проходил через эту защиту.

     untrusted config.json attention setting
                    │
                    ▼
        "pick attention type" logic
                    │                  never checks:
                    ✗ ─────────────▶   trust_remote_code
                    ▼
     download + run code from the Hub (via `kernels`)

4.2 Способствующие факторы

  1. Два пути к одному и тому же опасному действию, но защищён только один из них.
  2. Настройка, выбирающая код, трактовалась как обычные данные, с уровнем доверия, как у числа.
  3. «Внутреннее» поле (с префиксом _) всё ещё можно было задать из недоверенного файла.
  4. Необязательный пакет (kernels) незаметно включал атаку при установке, например через transformers[all].

4.3 Урок

Защищайте опасное действие, а не один путь к нему. Каждый путь, который может привести к «выполнению кода», должен проходить одну и ту же проверку.


5. Защита

Защита — это один самодостаточный скрипт, defence/safe_load.py. Его функция safe_from_pretrained() заменяет from_pretrained() и выполняет четыре проверки до загрузки любой модели. Если одна из них не проходит, он выбрасывает UnsafeModelLoad, и ничего не загружается.

#ПроверкаЧто она делает
1ВерсияОтказывает, если transformers старше 5.3.0. Это и есть настоящее исправление.
2KernelsНа старой версии отказывает, если установлен пакет kernels, поскольку атаке он нужен.
3КонфигурацияЧитает конфигурационные файлы модели и отказывает, если они содержат рискованную настройку (см. ниже). Модели из Hub проверяются и загружаются на одном и том же коммите.
4Удалённый кодВсегда устанавливает trust_remote_code=False. Это лишь хорошая практика: данная CVE обходит её.

Старая версия отклоняется на проверке 1. Проверки 2 и 3 выполняются на старой версии, только если задана лабораторная опция allow_vulnerable_env=True.

Что блокирует проверка 3:

  • Настройку внимания (attn_implementation, _attn_implementation, _attn_implementation_internal), которая не является встроенной. Разрешены только eager, sdpa, flash_attention_2, flash_attention_3 и flex_attention, поэтому значение вроде attacker-org/evil-kernel блокируется, даже внутри вложенной подконфигурации.
  • Поля _attn_implementation_internal, auto_map и custom_pipelines.
  • Конфигурационные файлы, которые невозможно прочитать.
  • Конфигурацию, переданную напрямую через config=, поскольку она обошла бы проверку.

Для моделей из Hub скачиваются только конфигурационные файлы, никогда — веса или код. Они скачиваются на одном фиксированном коммите, и затем модель загружается с того же коммита, поэтому файлы нельзя подменить между проверкой и загрузкой. После ознакомления с предупреждениями человек может переопределить проверку 3 с помощью accept_findings=True.

СитуацияЧто останавливает атаку
transformers 5.3.0 или новееПроверка 1
Старая версия, установлен kernelsПроверка 2
Старая версия, рискованная настройка в конфигурацииПроверка 3
Репозиторий изменён после проверкиПроверка 3 (проверяется и загружается один и тот же коммит)

Ограничение: проверка 3 знает только перечисленные выше настройки, поэтому она не может поймать новую атаку. Обновление до transformers>=5.3.0 — единственное полное исправление.


6. Обнаружение

Компонент обнаружения выявляет потенциально небезопасные конфигурации моделей Hugging Face и уязвимые зависимости, связанные с CVE-2026-4372. Он предоставляет два независимых механизма обнаружения: статическое сканирование конфигурации и анализ зависимостей.

В отличие от компонента защиты, эти инструменты сообщают о потенциальных рисках безопасности, не загружая модели и не выполняя недоверенный код.

6.1 Статическое обнаружение конфигурации

Файл: src/detection/static_detector.py

Скачать инструмент