
Локальная изолированная лаборатория и шаблон nuclei для CVE-2024-12537 — неаутентифицированной уязвимости типа «отказ в обслуживании» в конечной точке форматирования кода Open WebUI. Проверяет логику обнаружения на уязвимых и исправленных версиях.
Этот репозиторий содержит локальную изолированную лабораторию для воспроизведения уязвимости и кандидат шаблона nuclei для CVE-2024-12537 — неаутентифицированной уязвимости типа «отказ в обслуживании» в конечной точке форматирования кода Open WebUI.
Лаборатория не отправляет крупные DoS-нагрузки. Она проверяет логику обнаружения nuclei через неаутентифицированную конечную точку идентификации /api/version и минимальный запрос {"code":"x"} к /api/v1/utils/code/format, после чего сравнивает уязвимую версию с исправленной/более новой версией.
open-webui/open-webuiCVE-2024-12537GHSA-chf7-q7m5-fq92POST /api/v1/utils/code/formatGET /api/versionv0.5.10v0.6.14< 0.5.14 для неаутентифицированной модели угрозСсылки:
docker-compose.yml: запускает Open WebUI с выбираемым Docker-тегомverify-cve-2024-12537.sh: ожидает готовности, выводит /api/version и запускает nuclei при наличииnuclei/CVE-2024-12537.yaml: кандидат шаблона nucleicurlnucleiЗапускайте это только в локальной изолированной лаборатории. Не используйте эти команды против сторонних систем. Применяйте их только к системам, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение.
Запустите Open WebUI v0.5.10:
WEBUI_TAG=v0.5.10 docker compose up -d
Запустите проверочный скрипт:
sh verify-cve-2024-12537.sh
Наблюдаемый ответ уязвимой версии:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.5.10"}
Наблюдаемый вывод nuclei для уязвимой версии:
[CVE-2024-12537:dsl-1] [http] [high] http://127.0.0.1:3010/api/v1/utils/code/format ["0.5.10"]
Очистка:
docker compose down -v
Запустите Open WebUI v0.6.14:
WEBUI_TAG=v0.6.14 docker compose up -d
Запустите проверочный скрипт:
sh verify-cve-2024-12537.sh
Наблюдаемый ответ исправленной/более новой версии:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.6.14"}
Наблюдаемый вывод nuclei для исправленной/более новой версии:
No results found
Очистка:
docker compose down -v
Проверьте шаблон:
nuclei -validate -t nuclei/CVE-2024-12537.yaml
Запустите против локальной лаборатории:
nuclei -silent \
-t nuclei/CVE-2024-12537.yaml \
-include-templates nuclei/CVE-2024-12537.yaml \
-u http://127.0.0.1:3010
Ожидаемое поведение:
v0.5.10: совпадениеv0.6.14: без совпадения/api/v1/utils/code/format.{"code":"x"}, который возвращал {"code":"x\n"} на Docker v0.5.10 и {"detail":"Not authenticated"} на Docker v0.6.14.-include-templates, поскольку шаблоны с тегом dos могут исключаться по умолчанию.curl: (52) Empty reply from server, пока приложение ещё запускается. Проверочный скрипт ожидает ответа от /api/version.docker-compose.yml заданы RAG_EMBEDDING_MODEL="" и RAG_EMBEDDING_MODEL_AUTO_UPDATE=False, чтобы лаборатория не блокировалась на инициализации эмбеддинг-модели.<= 0.3.32; в этой лаборатории используется порог неаутентифицированного кодового пути < 0.5.14, определённый путём анализа коммитов. Соответствующая последовательность коммитов: d3d161f72 (без аутентификации, v0.5.0-v0.5.13), 2f75eef49 (добавляет get_verified_user, v0.5.14+), и 4fe45d443 (ужесточает защиту до get_admin_user, v0.6.14+).