Ejecución arbitraria de comandos OS en Langchain-Chatchat por falta de autenticación en endpoint de herramientas
Langchain-Chatchat, en todas sus versiones hasta la 0.3.1.3 inclusive, presenta una vulnerabilidad crítica de ejecución remota de comandos del sistema operativo derivada de la ausencia total de autenticación en uno de sus endpoints de API centrales.
Descripción técnica
El endpoint POST /tools/call permite invocar cualquier herramienta registrada en la plataforma especificando únicamente su nombre en la solicitud. El problema radica en que este endpoint no implementa ningún mecanismo de autenticación ni autorización, y en que la herramienta shell se encuentra registrada de forma permanente y predeterminada en todas las instalaciones.
Esto significa que cualquier atacante remoto con acceso de red al servicio puede enviar una única solicitud HTTP al endpoint, nombrando la herramienta shell y proporcionando los comandos que desea ejecutar, sin necesidad de credenciales ni sesión previa. El servidor ejecutará dichos comandos con los privilegios del proceso servidor, que en la imagen Docker oficial distribuida con el proyecto corresponde al usuario root.
Vector de ataque
Un atacante puede explotar esta vulnerabilidad con una solicitud tan simple como la siguiente:
curl -X POST http://<host>:<puerto>/tools/call \
-H "Content-Type: application/json" \
-d '{"tool_name": "shell", "tool_input": {"commands": ["id", "whoami", "cat /etc/passwd"]}}'
No se requiere ningún tipo de autenticación previa, token de sesión ni cabecera especial. La explotación es trivial y puede automatizarse o integrarse en herramientas de escaneo masivo.
Impacto
El impacto de esta vulnerabilidad es máximo. Un atacante remoto no autenticado puede:
- Ejecutar comandos arbitrarios del sistema operativo con privilegios de
rooten entornos Docker. - Leer, modificar o eliminar cualquier archivo del sistema, incluyendo datos sensibles, claves privadas y configuraciones.
- Instalar software malicioso, puertas traseras o agentes de persistencia.
- Pivotar hacia otros sistemas accesibles desde el servidor comprometido.
- Interrumpir completamente el servicio o destruir datos de forma irreversible.
Dado que la imagen Docker oficial ejecuta el proceso como root, no existe ninguna barrera de contención adicional dentro del contenedor que limite el alcance del daño.
Sistemas afectados
Todas las instalaciones de Langchain-Chatchat en versiones hasta la 0.3.1.3 están afectadas, especialmente aquellas desplegadas mediante la imagen Docker oficial, donde la explotación exitosa otorga privilegios de superusuario completos.
Recomendaciones
Se recomienda a los administradores y equipos de seguridad tomar las siguientes medidas de forma inmediata:
- Actualizar Langchain-Chatchat a una versión posterior que corrija esta vulnerabilidad, en cuanto esté disponible.
- Mientras no exista parche disponible, restringir el acceso al endpoint
POST /tools/callmediante controles de red, como reglas de firewall o listas de control de acceso, limitando el acceso exclusivamente a direcciones IP de confianza. - Evaluar si la herramienta
shellpuede desregistrarse o deshabilitarse manualmente en la configuración de la plataforma. - Revisar los registros de acceso al endpoint para detectar posibles explotaciones previas.
- Evitar ejecutar el servicio con privilegios de
root, tanto dentro como fuera de contenedores Docker, aplicando el principio de mínimo privilegio.
