FlawOpen

flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection

● CVE-2026-1731 · CVSS v4 9.9[1] · Crítica
Investigación · FlawOpen

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.

Vector CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:H/SA:L[1]
💡 Explicación en Lenguaje Sencillo (ELI5)

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

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

Paso 1

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.

Paso 2

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.

Paso 3

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.

Paso 4

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.

Paso 5

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.

Paso 6

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

IMPLEMENTACIÓN VULNERABLE
# Ejemplo reducido: remoteVersion procede del par.
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
    version=$localVersion
else
    version=$remoteVersion
fi
PARCHE SEGURO Y ROBUSTO
# 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

Fuentes