flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection
CVE-2026-1731: inyección de comandos en BeyondTrust
CVE-2026-1731 permite comandos sin autenticación vía WebSocket en BeyondTrust Remote Support/PRA. Actualice e investigue los sistemas expuestos.
Imagina una recepción que pide al visitante una versión numérica y entrega la respuesta a una calculadora que evalúa fórmulas, en vez de comprobar solo los dígitos. La entrada puede pasar de dato a instrucción. CVE-2026-1731 exponía ese límite en un servicio BeyondTrust; la corrección rechaza todo lo que no sea una versión decimal corta antes de compararla.
Conceptos Clave y Términos
CVE-2026-1731- Vulnerabilidad crítica de inyección de comandos del sistema, sin autenticación, en BeyondTrust Remote Support y Privileged Remote Access.
thin-scc-wrapper- Wrapper de shell de BeyondTrust usado en una ruta del protocolo cliente. El análisis del parche de Rapid7 identifica como límite vulnerable el tratamiento de la versión enviada por el par.
Evaluación aritmética de Bash- Los operadores numéricos de Bash evalúan operandos como expresiones aritméticas. El texto no confiable puede cruzar el límite entre dato y expresión.
CWE-78- Neutralización incorrecta de elementos especiales usados en un comando del sistema operativo, conocida como inyección de comandos.
CISA KEV- Catálogo de CISA que registra vulnerabilidades con evidencia de explotación real.
Mapeos de marcos
- Referencia CWE para la debilidad descrita en esta guía: CWE-78
- CISA KEV — añadido el 2026-02-13 — CVE-2026-1731
Análisis de Causa Raíz
El aviso de BeyondTrust de febrero de 2026 identifica CVE-2026-1731 como ejecución remota de código previa a la autenticación en Remote Support y Privileged Remote Access, con CWE-78 y CVSS 4.0 de 9,9. Las solicitudes especialmente preparadas podían ejecutar comandos del sistema operativo con el contexto del usuario del sitio. El análisis del parche del proveedor realizado por Rapid7 sitúa el límite de código en la ruta WebSocket de thin-scc-wrapper: el script lee remoteVersion, controlado por el par, y lo compara mediante operadores numéricos de Bash. Esas comparaciones realizan evaluación aritmética; un valor que no sea un número simple puede interpretarse como expresión. El parche exige uno o dos dígitos ASCII (^[0-9]{1,2}$) antes de comparar. El código siguiente es una ilustración reducida basada en fuentes, no un script completo del producto ni una prueba de explotación. BeyondTrust comunicó intentos iniciales el 10 de febrero y actividad limitada contra sistemas autoalojados expuestos a Internet que seguían sin parche antes del 9 de febrero. Más tarde, Google Threat Intelligence Group informó de varios grupos que explotaban la CVE y de distintas acciones posteriores. Esos informes demuestran actividad observada, pero no implican que todas las víctimas siguieran la misma cadena.
Flujo de Ataque Paso a Paso
Un appliance público acepta la conexión del protocolo
El servicio afectado expone una ruta WebSocket usada por su protocolo de cliente ligero. Rapid7 describe la ruta vulnerable como accesible sin autenticación; BeyondTrust clasifica el fallo como RCE previa a la autenticación.
El par proporciona una versión del protocolo
El wrapper lee de la conexión un valor de versión remota. Es una entrada controlada por quien solicita, no una configuración local de confianza.
Bash trata el valor como operando aritmético
La comparación vulnerable usa operadores numéricos de Bash. Como Bash evalúa los operandos numéricos como expresiones, la entrada sin validar no necesariamente sigue siendo texto inerte.
La inyección alcanza la cuenta del servicio
La explotación puede ejecutar comandos del sistema operativo con el usuario del sitio BeyondTrust. El proveedor califica como alto el impacto en confidencialidad, integridad y disponibilidad.
La explotación observada añade riesgo posterior
BeyondTrust comunicó intentos iniciales y actividad limitada contra appliances autoalojados expuestos a Internet y sin parche. GTIG informó después de varios grupos y acciones posteriores; cada informe es evidencia de campañas concretas, no una cadena universal.
El parche valida antes de comparar
El parche rechaza una versión remota no válida y termina el wrapper; solo un valor válido continúa con la negociación del protocolo. Aplique el parche o la versión corregida e investigue los sistemas expuestos mientras eran vulnerables.
Código Fuente: Vulnerable vs. Seguro
Rapid7 informa que el parche BT26-02 añade esta validación de uno o dos dígitos antes de comparar remoteVersion. Los fragmentos están reducidos y omiten el protocolo del producto y los detalles de las solicitudes. La propiedad clave es validar antes de la evaluación aritmética de Bash; entrecomillar no vuelve seguros los operandos aritméticos. Siempre que sea posible, analice y compare en un componente tipado que no use shell y rechace entradas no válidas en el límite del protocolo.
Fragmento de origen: thin-scc-wrapper — ilustración reducida basada en el análisis de Rapid7 del parche
# Ejemplo reducido: remoteVersion procede del par.
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
# Rechaza entradas inesperadas antes de cualquier comparación aritmética.
read -r remoteVersion || exit 1
if [[ ! "$remoteVersion" =~ ^[0-9]{1,2}$ ]]; then
exit 1
fi
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
Lista de Verificación de Seguridad para Ingeniería
- ✓Inventarie todos los appliances Remote Support y Privileged Remote Access, incluidos los autoalojados sin actualizaciones automáticas.
- ✓Aplique BT26-02-RS o actualice Remote Support a 25.3.2 o posterior; aplique BT26-02-PRA o actualice Privileged Remote Access a 25.1.1 o posterior, conforme al aviso vigente de BeyondTrust.
- ✓Si un sistema autoalojado estuvo expuesto a Internet y sin parche hasta el 9 de febrero de 2026, siga las instrucciones de respuesta a incidentes de BeyondTrust e investigue accesos no autorizados, persistencia, elevación de privilegios y acceso a datos.
- ✓Revise la telemetría de red y aplicación para detectar sesiones WebSocket inesperadas y procesos o comandos secundarios inusuales iniciados por la cuenta del servicio; contraste las alertas con el comportamiento normal del appliance.
- ✓En cada límite del shell, valide los campos del protocolo con una lista estricta antes de compararlos numéricamente; no pase texto no confiable a la aritmética de Bash,
evalni a una cadena de comandos. - ✓Añada pruebas de regresión para valores de versión vacíos, demasiado largos, con signo, espacios o caracteres no decimales; exija su rechazo antes de comparar o iniciar procesos.