CVE-2024-1522 in lollms-webui
Zusammenfassung
von VulDB • 19.06.2026
Ich habe CORS aktiviert, da ich eine Entwicklungsoberfläche (UI) hatte, die einen anderen Port verwendet, und ich vergessen habe, die Konfiguration wieder zu entfernen.
Was ich also getan habe, ist Folgendes: - Zuerst habe ich die CORS-Konfiguration entfernt, die jedem den Zugriff ermöglicht: vorher: ```python sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins="*", ping_timeout=1200, ping_interval=30) # CORS für alle aktivieren ``` nachher: ```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-Server erstellen 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 für ausgewählte Ursprünge aktivieren
```
- Zweitens habe ich lollms aktualisiert, um zwei Modi zu unterstützen (einen Headless-Modus und einen UI-Modus). Außerdem wurde /execute_code aktualisiert, um die Ausführung zu blockieren, wenn der Server im Headless-Modus läuft oder nach außen exponiert ist. ```python @router.post("/execute_code") async def execute_code(request: Request): """ Führt Python-Code aus und gibt die Ausgabe zurück.
:param request: Das HTTP-Anfrageobjekt. :return: Eine JSON-Antwort mit dem Status der Operation. """ if lollmsElfServer.config.headless_server_mode: return {"status":False,"error":"Die Codeausführung ist aus offensichtlichen Sicherheitsgründen im Headless-Modus blockiert!"}
if lollmsElfServer.config.host=="0.0.0.0": return {"status":False,"error":"Die Codeausführung ist aus sehr offensichtlichen Gründen blockiert, wenn der Server nach außen exponiert ist!"}
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("Python-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_python(code, discussion_id, message_id) if language=="javascript": ASCIIColors.info("JavaScript-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_javascript(code, discussion_id, message_id) if language in ["html","html5","svg"]:
ASCIIColors.info("JavaScript-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_html(code, discussion_id, message_id) elif language=="latex": ASCIIColors.info("LaTeX-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_latex(code, discussion_id, message_id) elif language in ["bash","shell","cmd","powershell"]:
ASCIIColors.info("Shell-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_bash(code, discussion_id, message_id) elif language in ["mermaid"]:
ASCIIColors.info("Mermaid-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_mermaid(code, discussion_id, message_id) elif language in ["graphviz","dot"]:
ASCIIColors.info("Graphviz-Code wird ausgeführt:") ASCIIColors.yellow(code) return execute_graphviz(code, discussion_id, message_id) return {"status": False, "error": "Nicht unterstützte Sprache", "execution_time": 0}
except Exception as ex: trace_exception(ex) lollmsElfServer.error(ex) return {"status":False,"error":str(ex)}
```
Ich habe auch einen optionalen https-Modus hinzugefügt und freue mich darauf, eine vollständige Authentifizierung mit Cookies und einer persönlichen Sitzung usw. hinzuzufügen.
Alle Updates werden in V 9.1 sein
Nochmals vielen Dank für deine Arbeit. Ich werde es beim nächsten Mal schwieriger machen, aber wenn du weitere Fehler findest, nur zu :)
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.