CVE-2024-1522 in lollms-webui
الملخص
بحسب VulDB • 14/06/2026
لقد قمت بتفعيل CORS لأنني كنت أملك واجهة مستخدم (UI) للتطوير تستخدم منفذًا مختلفًا، ثم نسيت إزالته.
لذا، ما قمت به هو:
- أولاً، قمت بإزالة تكوين CORS الذي يسمح للجميع بالوصول إليه:
قبل: ```python sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins="*", ping_timeout=1200, ping_interval=30) # تمكين CORS للجميع ```
بعد: ```python cert_file_path = lollms_paths.personal_certificates/"cert.pem" key_file_path = lollms_paths.personal_certificates/"key.pem" if os.path.exists(cert_file_path) and os.path.exists(key_file_path): is_https = True else: is_https = False
# إنشاء خادم Socket.IO sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins=config.allowed_origins+[f"https://localhost:{config['port']}" if is_https else f"http://localhost:{config['port']}"], ping_timeout=1200, ping_interval=30) # تمكين CORS للمصادر المحددة فقط
```
- ثانيًا، قمت بتحديث lollms ليكون له وضعان (وضع بدون واجهة headless ووضع الواجهة UI). وقمت أيضًا بتحديث `/execute_code` لمنع التنفيذ إذا كان الخادم في وضع headless أو مكشوفًا (exposed).
```python @router.post("/execute_code") async def execute_code(request: Request): """ ينفذ كود بايثون ويعيد المخرجات.
:param request: كائن طلب HTTP. :return: استجابة JSON تحتوي على حالة العملية. """ if lollmsElfServer.config.headless_server_mode: return {"status":False,"error":"تم حظر تنفيذ الكود عند العمل في وضع headless لأسباب أمنية واضحة!"}
if lollmsElfServer.config.host=="0.0.0.0": return {"status":False,"error":"تم حظر تنفيذ الكود عندما يكون الخادم مكشوفًا خارجيًا لأسباب أمنية واضحة جدًا!"}
try: data = (await request.json()) code = data["code"]
discussion_id = int(data.get("discussion_id","unknown_discussion")) message_id = int(data.get("message_id","unknown_message")) language = data.get("language","python")
if language=="python": ASCIIColors.info("تنفيذ كود بايثون:") ASCIIColors.yellow(code) return execute_python(code, discussion_id, message_id) if language=="javascript": ASCIIColors.info("تنفيذ كود جافاسكريبت:") ASCIIColors.yellow(code) return execute_javascript(code, discussion_id, message_id) if language in ["html","html5","svg"]:
ASCIIColors.info("تنفيذ كود جافاسكريبت:") ASCIIColors.yellow(code) return execute_html(code, discussion_id, message_id) elif language=="latex": ASCIIColors.info("تنفيذ كود لاتك:") ASCIIColors.yellow(code) return execute_latex(code, discussion_id, message_id) elif language in ["bash","shell","cmd","powershell"]:
ASCIIColors.info("تنفيذ كود shell:") ASCIIColors.yellow(code) return execute_bash(code, discussion_id, message_id) elif language in ["mermaid"]:
ASCIIColors.info("تنفيذ كود mermaid:") ASCIIColors.yellow(code) return execute_mermaid(code, discussion_id, message_id) elif language in ["graphviz","dot"]:
ASCIIColors.info("تنفيذ كود graphviz:") ASCIIColors.yellow(code) return execute_graphviz(code, discussion_id, message_id) return {"status": False, "error": "Unsupported language", "execution_time": 0}
except Exception as ex: trace_exception(ex) lollmsElfServer.error(ex) return {"status":False,"error":str(ex)}
```
كما أضفت وضع https اختياريًا وأتطلع إلى إضافة مصادقة كاملة مع ملفات تعريف الارتباط وجلسة شخصية وما إلى ذلك.
ستكون جميع التحديثات في الإصدار 9.1
مرة أخرى، شكرًا جزيلاً لك على عملك. سأجعل الأمر أصعب في المرة القادمة، ولكن إذا وجدت المزيد من الأخطاء، فلا تتردد في إخباري :)
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.