
로컬 격리 실험실 및 CVE-2024-12537을 위한 nuclei 템플릿. 이는 Open WebUI의 코드 포맷팅 엔드포인트에서 발생하는 인증되지 않은 서비스 거부 취약점입니다. 취약한 버전 및 패치된 버전에 대해 탐지 로직을 검증합니다.
이 저장소는 CVE-2024-12537에 대한 로컬 격리 재현 실습 환경과 nuclei 템플릿 후보를 포함합니다. 이는 Open WebUI의 코드 포맷팅 엔드포인트에서의 인증되지 않은 서비스 거부 취약점입니다.
이 실습 환경은 대규모 서비스 거부 페이로드를 보내지 않습니다. Open WebUI의 인증되지 않은 /api/version 핑거프린트 엔드포인트와 /api/v1/utils/code/format에 대한 최소 {"code":"x"} 요청을 통해 nuclei 탐지 로직을 검증한 후, 취약한 버전과 패치된/최신 버전을 비교합니다.
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: 선택 가능한 Docker 태그로 Open WebUI를 시작합니다.verify-cve-2024-12537.sh: 준비 상태를 기다리고 /api/version을 출력하며, 사용 가능할 때 nuclei를 실행합니다.nuclei/CVE-2024-12537.yaml: nuclei 템플릿 후보curlnuclei이 명령은 로컬 격리 실습 환경에서만 실행하십시오. 타사 시스템에 대해 이 명령을 사용하지 마십시오. 소유하고 있거나 명시적인 서면 승인을 받은 시스템에만 사용하십시오.
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"}만 사용하며, Docker v0.5.10에서는 {"code":"x\n"}을, Docker v0.6.14에서는 {"detail":"인증되지 않음"}을 반환했습니다.-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+)입니다.