Resumen
En Termix, el endpoint del File Manager encargado de resolver rutas de archivos construye un comando de shell usando un parámetro controlado por el usuario sin neutralizar correctamente la sintaxis de sustitución de comandos. Esto permite a un usuario autenticado ejecutar comandos arbitrarios en la sesión SSH activa hacia su propio servidor remoto — o, combinado con CVE-2026-45746, en la de otro usuario.
Producto afectado
Termix (Termix-SSH), versiones desde 2.1.0 hasta anteriores a 2.3.2.
La vulnerabilidad
El endpoint GET /ssh/file_manager/ssh/resolvePath recibe un parámetro path y lo usa para construir, en el backend, un comando que se ejecuta sobre la sesión SSH activa del File Manager. El valor de path se inserta dentro de comillas dobles en ese comando, con un escapado que en el código se ve así:
const escapedPath = expandPath.replace(/"/g, '\\\\"');
Esa línea solo se preocupa de que el valor recibido no "rompa" las comillas dobles del comando — pero no neutraliza la sintaxis de sustitución de comandos de la shell ($(...)). La mayoría de shells POSIX siguen interpretando $(...) como una subshell a ejecutar incluso estando dentro de comillas dobles. Con eso basta: una petición con path=x%24(id) devuelve en la respuesta la salida del comando ejecutado en el servidor remoto:
"resolvedPath":"xuid=0(root) gid=0(root) groups=0(root)"
Es decir, el propio cuerpo de la respuesta JSON filtra la salida del comando inyectado — no hace falta ni una shell inversa para confirmar la ejecución.
Impacto
Ejecución remota de comandos arbitrarios (RCE) sobre el servidor remoto asociado a la sesión SSH del File Manager, usando una funcionalidad que en teoría solo debería resolver una ruta, no ejecutar código.
Cronología
- Reportado al equipo de Termix de forma coordinada.
- Publicado en GitHub Security Advisories el 5 de junio de 2026.
- Identificador asignado: CVE-2026-45750 (CWE-78 OS Command Injection, CWE-639 Authorization Bypass Through User-Controlled Key).
Remediación
Corregido en Termix 2.3.2, sanitizando correctamente el parámetro path antes de incorporarlo al comando ejecutado sobre la sesión SSH (en vez de solo escapar comillas dobles). Se recomienda actualizar a la versión 2.3.2 o posterior.