# Node.js corrige 10 vulnerabilidades, una con RCE en Brotli: actualiza hoy

> Node.js 22.23.4, 24.22.1 y 26.12.1 corrigen 10 vulnerabilidades, entre ellas CVE-2026-111497, una ejecución remota de código en el decodificador Brotli. Qué hacer ahora.

URL: https://codegea.com/actualizacion-de-seguridad-de-node-js-octubre-2026-rce-en-brotli
Node.js · 2026-10-22 · Derian Pinto

El 21 de octubre de 2026 el proyecto Node.js publicó versiones de seguridad para las líneas 22.x, 24.x y 26.x. Corrigen **10 vulnerabilidades**. La más seria es **CVE-2026-111497**: una escritura fuera de límites en el decodificador Brotli que permite **ejecución remota de código**.

Un matiz importante: el aviso oficial clasifica la más grave como **severidad alta (High)**, no «crítica», y no menciona ningún problema crítico. Aun así, una RCE en una librería que procesa datos de red merece actualizarse cuanto antes.

## Versiones parcheadas

| Línea | Versión corregida |
| --- | --- |
| 22.x | **22.23.4** |
| 24.x (LTS) | **24.22.1** |
| 26.x | **26.12.1** |

Las versiones que ya llegaron a fin de vida **también están afectadas** y no recibirán parche.

## Las 10 vulnerabilidades

| CVE | Severidad | Líneas | Resumen |
| --- | --- | --- | --- |
| CVE-2026-111497 | Alta | 22, 24, 26 | Escritura fuera de límites en el decodificador Brotli que permite ejecución remota de código |
| CVE-2026-106069 | Alta | 22, 24, 26 | Bypass de la verificación de hostname TLS cuando el host se resuelve de forma laxa a una IP |
| CVE-2026-105483 | Alta | 24, 26 | Bypass de hostname TLS cuando la IP se escribe con dígitos de ancho completo |
| CVE-2026-105482 | Alta | 22, 24, 26 | `dns.resolve` trunca nombres que contienen el carácter NUL |
| CVE-2026-105481 | Media | 22, 24, 26 | Un socket keep-alive procesa una respuesta escrita antes de enviarse la petición |
| CVE-2026-106072 | Media | 22, 24, 26 | Validación de certificados incorrecta con hostnames IPv4 no canónicos |
| CVE-2026-106074 | Media | 22, 24, 26 | Las cachés de entropía de `crypto.randomUUID()` y `randomInt()` se guardan en snapshots y SEA, y todos los procesos repiten los mismos valores |
| CVE-2026-106070 | Baja | 26 | `ZipFile` devuelve bytes de prefijo controlados por el atacante tras una validación fallida |
| CVE-2026-106071 | Baja | 26 | Exceso de permisos en el sistema de archivos del Permission Model |
| CVE-2026-106073 | Baja | 22, 24, 26 | Bypass del Permission Model con `fs.realpathSync` |

La versión también actualiza dependencias internas: c-ares, Undici, OpenSSL (22.x y 24.x), SQLite (22.x) y un cambio en los certificados raíz por el compromiso de una CA intermedia (eMudhra).

## Por qué importa lo de Brotli

Brotli es un formato de compresión que los servidores web y las APIs usan de forma habitual. Node lo incluye en el propio binario, de modo que **no basta con actualizar una librería Brotli del sistema operativo: necesitas el nuevo binario de Node**.

Según análisis de terceros del aviso, `fetch()` y Express 5 descomprimen Brotli automáticamente, lo que facilita llegar al código vulnerable cuando tu aplicación procesa datos que no controla, como respuestas de APIs externas. El aviso oficial solo describe la falla en una línea, así que conviene no suponer más de lo publicado. Hasta ahora no se han reportado ataques, pero la ventana entre parche y explotación suele ser corta.

## Cómo actualizar

1. **Revisa tu versión:** `node -v` en el servidor y, si usas contenedores, la etiqueta de tu imagen base.
2. **Instalación con nvm o fnm:** `nvm install 24` (o la línea que uses) y `nvm alias default 24`.
3. **Docker:** actualiza `FROM node:24` a una imagen reconstruida (`node:24.22.1`) y vuelve a construir sin caché.
4. **Plataformas administradas (Vercel, Railway, Render…):** confirma que tu proyecto usa la última versión menor de tu línea; en la mayoría se fija en los ajustes del proyecto.
5. **Reinicia los procesos** (PM2, systemd, contenedores). Un proceso ya en marcha sigue usando el binario viejo en memoria.
6. **Si usas snapshots de arranque o SEA** (Single Executable Applications): **vuelve a generarlos** con la versión nueva por CVE-2026-106074; actualizar el binario no basta.
7. Corre tus pruebas y revisa que `npm audit` no reporte nada adicional.

Si todavía estás en una línea sin soporte (por ejemplo Node 18 o 20), aprovecha para migrar a 24 LTS: el parche no llegará a esas versiones.

## Qué revisar además

- Que las llamadas salientes verifiquen siempre el certificado TLS y no desactiven la validación (`rejectUnauthorized: false`).
- Que no uses el Permission Model como única barrera de seguridad mientras no actualices.
- Que tu pipeline de CI instale una versión fijada y no «latest» sin control.

## Referencias

- [Node.js Security Releases: October 21, 2026](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases) (aviso oficial)
- [Todos los avisos de seguridad de Node.js](https://nodejs.org/en/blog/vulnerability)
- [Calendario de versiones de Node.js](https://github.com/nodejs/release#release-schedule)
- [Node.js security advisory: Brotli decoder RCE (CVE-2026-111497)](https://vercel.com/kb/bulletin/node-js-security-advisory) (Vercel)
- [Node.js October 2026 Security Releases](https://blog.cloudlinux.com/node-js-october-2026-security-releases) (CloudLinux)

---

¿Tu aplicación Node.js corre en un servidor que nadie revisa? En Codegea auditamos tu versión de Node, actualizamos y reconstruimos tu despliegue y dejamos [mantenimiento y monitoreo continuo](/retainer) para que no dependas de enterarte por las noticias. [Cuéntanos tu caso](/contacto).
