
POC_CVE-2024-12537
يحتوي هذا المستودع على معمل عزل محلي لإعادة إنتاج الثغرة ونموذج أولي لأداة Nuclei لـ CVE-2024-12537، وهي ثغرة رفض خدمة غير موثقة في نقطة نهاية تنسيق الكود في Open WebUI.
لا يرسل المعمل حمولات كبيرة لرفض الخدمة. بل يتحقق من منطق الكشف في Nuclei عبر نقطة نهاية بصمة الإصبع /api/version غير الموثقة في Open WebUI وطلب بسيط {"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 فما فوق).