AWS Builder Center
Cómo encontrar todos los Node.js de tu cuenta de AWS después de Node2Shell (CVE-2026-111497)

Cómo encontrar todos los Node.js de tu cuenta de AWS después de Node2Shell (CVE-2026-111497)

Node.js corrigió una falla en su decodificador Brotli que puede terminar en ejecución de código, y Node.js 20 se queda sin parche. Una lista con comandos de AWS CLI para encontrar cada función Lambda, contenedor y servidor con Node.js, y qué actualizar primero.

El 21 de octubre de 2026 Node.js publicó el arreglo de la CVE-2026-111497, una escritura fuera de límites en el decodificador Brotli que viene dentro del runtime. Node.js la califica como alta y advierte que permite ejecución remota de código. Las versiones corregidas son 22.23.4, 24.22.1 y 26.12.1. Node.js 20 y las ramas anteriores ya no tienen soporte y no reciben el arreglo.
La falla está en Node.js, no en tus dependencias, así que npm update no sirve. Lo que hace falta es un inventario: cada lugar de la cuenta donde corre Node.js y en qué versión. Esta es la lista que uso.

¿Cuándo está expuesta una aplicación?

El decodificador entra en juego cuando Node.js descomprime datos Brotli. Lo que importa es el Brotli que viene de alguien que no controlas:
  • Cuerpos de petición comprimidos. Express 5 y body-parser 2 descomprimen los cuerpos que llegan con Content-Encoding: br. Cualquiera en internet puede mandar uno.
  • Respuestas de terceros. El fetch() integrado pide y descomprime Brotli. Las vistas previas de enlaces, los que envían webhooks y los scrapers que consultan URLs que pone el usuario son el caso a revisar.
  • zlib directo. zlib.brotliDecompress() o zlib.createBrotliDecompress() sobre archivos subidos o datos externos.
Un servicio que no hace nada de esto tiene poca exposición. Igual hay que actualizarlo, pero no es para esta noche.

1. Lambda: listar funciones por runtime en todas las regiones

Con los runtimes administrados nodejs22.x y nodejs24.x, AWS aplica los parches de seguridad por ti, salvo que hayas fijado la versión del runtime. nodejs20.x quedó en fin de soporte el 30 de abril de 2026: las funciones siguen corriendo, pero Lambda ya no parcha el runtime del lenguaje.
1
2
3
4
5
for r in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
aws lambda list-functions --region "$r" \
--query "Functions[?starts_with(Runtime, 'nodejs')].[FunctionName, Runtime]" \
--output text | sed "s/^/$r\t/"
done
Todo lo que salga en nodejs20.x o anterior va de primero en la lista. Las funciones empaquetadas como imagen de contenedor salen con Runtime vacío: revisa la imagen base y reconstrúyela.

2. Contenedores: revisa la imagen, no la etiqueta

Una imagen node:22 construida antes del 21 de octubre sigue vulnerable. Para ver qué imágenes usan tus servicios de ECS:
1
2
3
4
5
aws ecs list-task-definitions --status ACTIVE --query 'taskDefinitionArns[]' --output text |
tr '\t' '\n' | while read td; do
aws ecs describe-task-definition --task-definition "$td" \
--query 'taskDefinition.containerDefinitions[].image' --output text
done | sort -u
Después confirma la versión real dentro de una tarea en ejecución (node -v con ECS Exec) o reconstruye desde una imagen base nueva y vuelve a desplegar. Si tienes activado el escaneo de contenedores, Amazon Inspector también reporta paquetes de Node.js vulnerables en las imágenes de ECR.

3. EC2 y Lightsail

Si las instancias tienen el agente de SSM con Inventory activado, puedes consultar las aplicaciones instaladas sin entrar a cada máquina. Si no, node -v en la instancia, revisando el binario que realmente arranca el servicio (con nvm suele ser distinto del del sistema).

4. Si no puedes actualizar hoy

Rechaza los cuerpos de petición con Content-Encoding: br en las rutas que no los necesitan, en el balanceador, en AWS WAF o en tu código. Baja el riesgo, pero el decodificador sigue vulnerable hasta que actualices Node.js.

Fuentes

Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article