このリポジトリには、CVE-2024-12537(Open WebUI のコードフォーマットエンドポイントにおける認証不要のサービス拒否脆弱性)のローカルでの独立した再現ラボと nuclei テンプレート案が含まれています。
ラボは大規模なサービス拒否ペイロードを送信しません。認証不要の /api/version フィンガープリントエンドポイントと、{"code":"x"} の最小限のリクエストを /api/v1/utils/code/format に送信することで 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":"Not authenticated"} が返されました。-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 以降)です。