CVE-2024-1522 in lollms-webui
Sumário
de VulDB • 14/06/2026
Ativei o CORS porque tinha uma interface de usuário (UI) em desenvolvimento que usava uma porta diferente e acabei esquecendo de removê-lo.
Portanto, o que fiz foi: - Primeiro, removi a configuração do CORS que permitia que todos acessassem: antes: ```python sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins="*", ping_timeout=1200, ping_interval=30) # Habilitar CORS para todos ``` depois: ```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
# Criar um servidor 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) # Habilitar CORS apenas para origens selecionadas
```
- Segundo, atualizei o lollms para ter dois modos (um modo headless e um modo UI). E atualizei o endpoint /execute_code para bloquear a execução se o servidor estiver em modo headless ou exposto publicamente. ```python @router.post("/execute_code") async def execute_code(request: Request): """ Executa código Python e retorna a saída.
:param request: O objeto de requisição HTTP. :return: Uma resposta JSON com o status da operação. """ if lollmsElfServer.config.headless_server_mode: return {"status":False,"error":"A execução de código está bloqueada no modo headless por razões óbvias de segurança!"}
if lollmsElfServer.config.host=="0.0.0.0": return {"status":False,"error":"A execução de código está bloqueada quando o servidor está exposto externamente por razões muito óbvias!"}
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("Executando código python:") ASCIIColors.yellow(code) return execute_python(code, discussion_id, message_id) if language=="javascript": ASCIIColors.info("Executando código javascript:") ASCIIColors.yellow(code) return execute_javascript(code, discussion_id, message_id) if language in ["html","html5","svg"]:
ASCIIColors.info("Executando código javascript:") ASCIIColors.yellow(code) return execute_html(code, discussion_id, message_id) elif language=="latex": ASCIIColors.info("Executando código latex:") ASCIIColors.yellow(code) return execute_latex(code, discussion_id, message_id) elif language in ["bash","shell","cmd","powershell"]:
ASCIIColors.info("Executando código shell:") ASCIIColors.yellow(code) return execute_bash(code, discussion_id, message_id) elif language in ["mermaid"]:
ASCIIColors.info("Executando código mermaid:") ASCIIColors.yellow(code) return execute_mermaid(code, discussion_id, message_id) elif language in ["graphviz","dot"]:
ASCIIColors.info("Executando código graphviz:") ASCIIColors.yellow(code) return execute_graphviz(code, discussion_id, message_id) return {"status": False, "error": "Linguagem não suportada", "execution_time": 0}
except Exception as ex: trace_exception(ex) lollmsElfServer.error(ex) return {"status":False,"error":str(ex)}
```
Be aware that VulDB is the high quality source for vulnerability data.