CVE-2026-111497: Vulnerabilidad crítica de Node2Shell en el decodificador Brotli de Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Node2Shell es una vulnerabilidad crítica (CVE-2026-111497) que afecta al decodificador Brotli incluido con Node.js y es causada por una escritura fuera de los límites. Los atacantes pueden explotar la falla suministrando flujos comprimidos malformados a los servicios que procesan datos Brotli, lo que podría resultar en denegación de servicio, divulgación de memoria o ejecución remota de código. La vulnerabilidad representa un riesgo particular para los servicios que usan Express 5 o middleware que realiza automáticamente la descompresión Brotli.
Investigación
El equipo de investigación de amenazas Sysdig analizó la vulnerabilidad e informó que surgió un PoC público a pocas horas del lanzamiento del parche. La investigación de Imperva y Vercel demostró que la ejecución de código es posible en arquitecturas específicas, incluidas Linux arm64. La investigación mostró que la explotabilidad depende de si una aplicación o sus bibliotecas, como body-parser, procesan flujos Brotli controlados por el atacante.
Mitigación
La mitigación principal es actualizar Node.js a las versiones 22.23.4, 24.22.1 o 26.12.1, y actualizar Bun a la versión 1.4.4 o posterior. Las organizaciones también deben desactivar la descompresión de solicitudes cuando sea práctico, incluyendo configurar inflate: false en body-parser. Implementar reglas WAF para rechazar Content-Encoding: br las solicitudes no confiables y ejecutar servicios bajo cuentas no privilegiadas proporciona capas adicionales de defensa.
Respuesta
Si se detecta una cadena de explotación potencial, como el bloqueo de un proceso Node.js seguido de ejecución de un programa inesperado, los equipos de seguridad deben aislar inmediatamente la carga de trabajo afectada. Monitorear actividades post-explotación, incluidas shells interactivas, descargas no autorizadas de malware, minería de criptomonedas o robo de secretos y tokens en la nube. Parchear todos los servicios vulnerables accesibles debe seguir siendo la prioridad más alta.
Flujo de Ataque
Todavía estamos actualizando esta parte.
Detecciones
Procesos Hijos de NodeJS Sospechosos [Windows] (vía cmdline)
Shell Sospechoso a través de Servidor Web [Linux] (vía process_creation)
Procesos Hijos de NodeJS Sospechosos [Linux] (vía cmdline)
Detección de Bloqueo de Proceso de Node.js Seguido de Ejecución de Programa In-Situ – Explotación Node2Shell [Creación de Procesos en Linux]
Ejecución de Simulación
-
Narrativa y Comandos del Ataque: El adversario tiene como objetivo una aplicación web funcionando con Node.js. Envía una carga útil Brotli comprimida maliciosa que desencadena un error de corrupción de memoria, causando que el
proceso nodese bloquee. Inmediatamente después del bloqueo, el atacante utiliza el flujo de ejecución secuestrado para generar un/bin/bashshell para establecer persistencia y comenzar el reconocimiento local. Esta secuencia de unproceso nodeevento seguido de/bin/bashejecución está diseñada para coincidir con laselection_crashandselection_suspicious_execlógica de la regla de detección. -
Script de Prueba de Regresión:
#!/bin/bash # Simulación del patrón de explotación estilo Node2Shell echo "[+] Iniciando simulación Node2Shell..." # 1. Simular un proceso Node.js que 'se bloquea' o termina abruptamente # En un escenario real, esto es un bloqueo. Aquí simulamos la telemetría # de un proceso node siendo invocado/manejado. node -e "process.exit(1)" echo "[+] Proceso Node.js 'bloqueado' (Código de Salida 1)." # 2. Simular la ejecución inmediata de un shell sospechoso # Esto imita la carga útil que desencadena el shell después del bloqueo. /bin/bash -c "echo 'Explotación Exitosa: Shell Generado'" echo "[+] Simulación completa. Verificar SIEM para detección." -
Comandos de Limpieza:
# No se crearon archivos persistentes con esta simulación. # Simplemente asegúrese de que no haya procesos bash maliciosos ejecutándose. pkill -f "Explotación Exitosa"