
Escáner pasivo de vulnerabilidades para CVE-2026-1731 — RCE pre-autenticación en BeyondTrust RS/PRA (CVSS 9.9). Solo para uso educativo y defensivo.
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ CVE-2026-1731 ║
║ Escáner Pasivo de Vulnerabilidades BeyondTrust RS/PRA ║
║ ║
╠═══════════════════════════════════════════════════════════════╣
║ ESCÁNER PASIVO — SOLO USO EDUCATIVO Y AUTORIZADO ║
║ ║
║ Realiza fingerprinting pasivo mediante HTTP GET estándar. ║
║ No se envían payloads de exploit. Sin conexiones WebSocket. ║
║ Úselo solo contra sistemas propios o autorizados para probar║
║ ║
║ Métodos: extracción de versión BRDF, /check_health, ║
║ tamaño de activos estáticos, API /get_mech_list, ║
║ análisis HTML, año de copyright, sonda /nw ║
║ ║
║ Autor: NetGuard 24/7 LLC ║
║ Web: https://netguard24-7.com ║
╚═══════════════════════════════════════════════════════════════╝
Un escáner de vulnerabilidades pasivo para CVE-2026-1731 — una vulnerabilidad crítica (CVSS 9.9) de ejecución remota de código sin autenticación en BeyondTrust Remote Support (RS) y Privileged Remote Access (PRA).
Esta herramienta identifica instancias vulnerables de BeyondTrust utilizando solo solicitudes HTTP GET estándar. No se envían payloads de exploit. No se establecen conexiones WebSocket. No se intenta autenticación.
Actualización: 16/02/2026
Aplicar el hotfix BT26-02-RS o BT26-02-PRA hará que las instancias detectadas de BeyondTrust por debajo de RS (v21.3 - 25.3.1) o PRA (v22.1 - 24.X) aparezcan como vulnerables, ya que el hotfix no resulta en incrementos de versión; por lo tanto, las instancias parcheadas con el hotfix (BT26-02-RS o BT26-02-PRA) aparecerán como vulnerables. Una vez que se actualice la versión base, la instancia aparecerá como no vulnerable". Según el proveedor, la corrección oficial se aborda en Remote Support 25.3.2 y superior | Privileged Remote Access 25.1 y superior
Autor: NetGuard 24/7 LLC
Esta herramienta se proporciona únicamente con fines EDUCATIVOS y DEFENSIVOS AUTORIZADOS.
Solo puede UTILIZAR esta herramienta contra sistemas que le pertenezcan o para los cuales tenga autorización escrita explícita para realizar pruebas. El escaneo no autorizado de sistemas que no le pertenecen puede violar las leyes aplicables, incluida la Computer Fraud and Abuse Act (CFAA) y estatutos similares en otras jurisdicciones.
Los autores no asumen ninguna responsabilidad por el uso indebido de esta herramienta. Al utilizar este software, usted acepta usarlo de manera responsable y en cumplimiento de todas las leyes y regulaciones aplicables.
| Campo | Detalle |
|---|---|
| CVE | CVE-2026-1731 |
| CVSS | 9.9 (Crítico) |
| Aviso | BT26-02 |
| Tipo | Ejecución remota de código sin autenticación |
| Vector | Endpoint WebSocket /nw — Inyección de evaluación aritmética Bash |
| Afectados | RS ≤ 25.3.1, PRA ≤ 24.3.4 |
| Corregido | RS 25.3.2+, PRA 25.1.1+ |
| Explotación | Activa en la naturaleza desde el 12 de febrero de 2026 |
CVE-2026-1731 es una variante de CVE-2024-12356 (la vulnerabilidad utilizada por un APT chino para vulnerar el Tesoro de EE. UU.). Ambas apuntan al mismo endpoint WebSocket /nw y al script Bash subyacente thin-scc-wrapper. El parche BT24-10 para CVE-2024-12356 añadió una verificación de sanidad numérica, pero no logró prevenir la evaluación aritmética Bash del parámetro remoteVersion — que es lo que explota CVE-2026-1731.
Este escáner utiliza 8 métodos de fingerprinting pasivo — validados contra instancias reales de BeyondTrust — para determinar la versión del producto y el estado de vulnerabilidad sin enviar tráfico de exploit.
| # | Método | Endpoint | Qué Extrae | Confianza |
|---|---|---|---|---|
| 1 | Extracción de Versión BRDF | GET /get_rdf?comp=sdcust&locale_code=en-us | Versión exacta del producto desde el encabezado binario (p. ej., 24.1.4) | EXACTA |
| 2 | Respuesta /check_health | GET /check_health | "Health Check: Succeeded" = pre-25.x / "Status: Primary" = 25.x+ | ALTA |
| 3 | Tamaño de Activos Estáticos | HEAD /js/login.js | Tamaño del archivo: ~36K-39K = pre-25.x / ~12K = 25.x+ | ALTA |
| 4 | API /get_mech_list | GET /get_mech_list?version=3 | Nombre de la empresa + campo thin_rep_enabled (solo 25.x+) | ALTA |
| 5 | Estructura HTML | GET /login | XHTML 1.1 + BOMGAR = pre-25.x / HTML5 = 25.x+ | MEDIA |
| 6 | Año de Copyright | Pie de página de GET /login | 2002-2024 = pre-25.x / 2002-2025 = 25.x | MEDIA |
| 7 | Información del Portal | GET /get_portal_info | Valor X-Ns-Company (indicador de reconocimiento de atacantes) | — |
| 8 | Sonda WebSocket | GET /nw (solo HTTP) | Confirma la accesibilidad de la superficie de ataque | — |
Método 1 (BRDF) es la misma técnica utilizada por Metasploit y el plugin 213456 de Nessus. Cuando BRDF devuelve una versión exacta, la confianza es EXACTA. Algunas instancias 25.x eliminan la versión de BRDF — en esos casos, los métodos 2-6 se puntúan y corroboran para inferir el rango de versión.
/nwgit clone https://github.com/YOUR_USERNAME/cve-2026-1731-scanner.git
cd cve-2026-1731-scanner
chmod +x cve_2026_1731_scanner.py
python3 cve_2026_1731_scanner.py -t support.example.com -v
# Cree una lista de objetivos (un host por línea)
cat > targets.txt << 'EOF'
support.example.com
pra.example.com
192.168.1.50
10.0.0.100:8443
remote-support.beyondtrustcloud.com
EOF
# Ejecute el escaneo
python3 cve_2026_1731_scanner.py -f targets.txt --threads 20 -o results.csv --json results.json -v
usage: cve_2026_1731_scanner.py [-h] (-t TARGET | -f FILE) [-o OUTPUT]
[--json JSON_OUTPUT] [--threads THREADS] [-v]
options:
-t, --target TARGET Hostname o IP de un solo objetivo
-f, --file FILE Archivo que contiene los objetivos (uno por línea)
-o, --output OUTPUT Exportar resultados a archivo CSV
--json JSON_OUTPUT Exportar resultados a archivo JSON
--threads THREADS Hilos concurrentes (predeterminado: 10)
-v, --verbose Salida detallada por objetivo
El archivo de objetivos acepta entrada flexible — una entrada por línea:
# Se admiten comentarios (líneas que comienzan con #)
192.168.1.1
10.0.0.5
support.example.com
support.example.com:8443
https://support.example.com
http://support.example.com # se actualiza automáticamente a HTTPS
support.example.com/login # las rutas se eliminan automáticamente
| Nivel | Significado |
|---|---|
| CRÍTICO | Versión exacta confirmada como vulnerable mediante BRDF, o múltiples señales de alta confianza indican pre-25.x |
| ALTO | Probablemente vulnerable pero con menos señales corroborantes; se recomienda verificación manual |
| MEDIO | Inferido como 25.x+ (RS aún podría ser vulnerable hasta 25.3.1); verificar el parche BT26-02 |
| BAJO/INFO | Instancia SaaS (parcheada automáticamente), versión parcheada confirmada, o confirmada como segura |
| Confianza | Fuente | Significado |
|---|---|---|
| EXACTA | BRDF /get_rdf | Cadena de versión exacta extraída del binario (p. ej., 24.1.4) |
| ALTA | Multi-señal (3+) | 3 o más señales independientes coinciden sin contradicciones |
| MEDIA | Multi-señal (2+) | La mayoría de las señales coinciden pero con cierta ambigüedad |
| BAJA | No concluyente | Señales conflictivas o insuficientes |
| Código | Significado |
|---|---|
0 | Sin hallazgos críticos o altos |
1 | Hallazgos de alto riesgo detectados |
2 | Hallazgos críticos detectados |
# Ejemplo: integración en pipeline CI/CD
python3 cve_2026_1731_scanner.py -f targets.txt -o results.csv
if [ $? -eq 2 ]; then
echo "CRÍTICO: ¡Se encontraron instancias vulnerables de BeyondTrust!"
# activar alerta / notificar al equipo de guardia / abrir ticket
fi
[*] Escaneando https://support.example.com...
Estado: VULNERABLE [CRÍTICO]
Versión: 24.1.4 (mediante BRDF /get_rdf, confianza: EXACTA)
Empresa: examplecorp
Producto: Remote Support
Señales: health=old, login.js=36458B, html=modern, ©2024
/nw: ALCANZABLE
| Campo | Descripción |
|---|---|
target | URL escaneada |
is_beyondtrust | Si se detectó BeyondTrust |
product_type | Remote Support o Privileged Remote Access |
product_version | Versión exacta (si se extrajo de BRDF) |
version_source | Cómo se determinó la versión |
version_confidence | EXACTA, ALTA, MEDIA o BAJA |
company_name | Valor X-Ns-Company (utilizado en la explotación) |
copyright_year | Del pie de página de la página de inicio de sesión |
health_check_type | old (pre-25.x) o new (25.x+) |
login_js_size | Tamaño del archivo de /js/login.js |
thin_rep_enabled | Presente solo en 25.x+ |
html_generation | legacy (XHTML) o modern (HTML5) |
is_saas | Instancia SaaS (.beyondtrustcloud.com) |
ws_endpoint_reachable | Si /nw responde |
vulnerability_status | Resultado de la evaluación |
risk_level | CRÍTICO, ALTO, MEDIO, BAJO o INFO |
details | Detalles de evaluación legibles por humanos |
Si el escáner identifica instancias vulnerables:
/nw si no es posible parchear de inmediato/nw con valores remoteVersion inusuales que contengan $() o comillas invertidasSe aceptan pull requests. Si descubre métodos adicionales de fingerprinting pasivo o señales de correlación de versiones, abra un issue o PR.
Licencia MIT — consulte LICENSE para más detalles.
NetGuard 24/7 LLC https://netguard24-7.com