AISubHub/Noticias de IA
Desarrolladores

Análisis en profundidad · Unos 7 min de lectura

Brotli: el parche debe llegar a cada copia del decodificador en ejecución

Node.js documenta CVE-2026-111497; una guía de despliegue detalla correcciones y controles temporales, con límites de decodificación y soporte.

Publicado aquí
Fecha de la fuente
Fuente revisada

Node.js documenta CVE-2026-111497, notificada por OpenAI Codex Security, mientras PatchthePlanet detalla correcciones para los componentes que incorporan la biblioteca y controles temporales. El caso ilustra la distancia entre reparar una biblioteca compartida y proteger el software desplegado. La exposición depende de que datos no confiables lleguen a un decodificador afectado; usar Brotli por sí solo no demuestra que todos los despliegues sean vulnerables.

Escucha las noticias

Escucha este artículo o continúa con las noticias.

Brotli: el parche debe llegar a cada copia del decodificador en ejecución

Preparando la lectura…

Voz del dispositivo

El navegador o dispositivo procesa la voz. AISubHub no envía el texto a una API de audio. Las voces y la reproducción con pantalla bloqueada dependen del dispositivo.

Al continuar puede repetirse una frase breve.

Resumen

  • Node.js enumera correcciones en 22.23.4, 24.22.1 y 26.12.1; el fallo puede corromper la memoria cuando una aplicación descomprime datos Brotli suministrados por un atacante.
  • La guía enumera correcciones para Bun, Envoy, Istio y Brotli original, pero advierte que una versión corregida de una rama sin soporte no constituye una vía de actualización con soporte.
  • Los controles temporales deben bloquear Brotli no confiable antes de decodificarlo en cada ruta pertinente. Desactivar la compresión de salida o quitar br de Accept-Encoding no basta.

La divulgación y las fechas de las fuentes

El aviso de Node.js atribuye el hallazgo de la vulnerabilidad de Brotli a Khai Tran y Sylvie Mayer, de OpenAI Codex Security, y su corrección a mcollina y aduh95. La guía de despliegue de PatchthePlanet relaciona el software afectado con versiones y controles temporales. La interpretación práctica de AISubHub es que la protección debe propagarse mediante versiones de componentes, runtimes integrados, aplicaciones reconstruidas y despliegues de usuarios realmente en ejecución; instalar un único paquete no demuestra por sí solo que el proceso haya terminado.

La página de Node.js lleva un título de publicación de seguridad del 21 de octubre, pero no fecha la incorporación de cada entrada CVE. PatchthePlanet indica Actualizado el 23 de octubre, que no es su fecha y hora de publicación original. Estas fechas no establecen cuándo llegó cada corrección a los usuarios. AISubHub leyó estos materiales públicos el 24 de octubre; una fecha de acceso es distinta del título de una página de lanzamiento o de una etiqueta de actualización.

Cómo ocho bytes se convierten en un riesgo

Node.js explica que un cambio de bloque no válido se interpretaba como una necesidad temporal de más datos, en vez de un error de formato permanente. El decodificador en flujo seguía añadiendo bytes a un búfer interno de ocho bytes y podía escribir fuera de sus límites. Si una aplicación descomprime datos controlados por un atacante mediante node:zlib, las consecuencias posibles incluyen una caída, filtración de memoria o ejecución remota de código.

El límite relevante es la decodificación de entradas no confiables: cuerpos de solicitud, respuestas de servidores no confiables y archivos comprimidos. Comprimir únicamente datos salientes no demuestra exposición. La guía también señala runtimes integrados, curl/libcurl, enlaces de Python o Java, decodificadores de fuentes y lectores de archivos. Una aplicación Electron puede contener copias separadas de Chromium y Node.js; corregir una no demuestra que ambas estén corregidas.

Elegir una versión corregida con soporte

Node.js cita 22.23.4, 24.22.1 y 26.12.1. PatchthePlanet enumera Bun 1.4.4, que incluye Brotli 1.2.1, y las versiones originales de Brotli 1.0.10, 1.1.1 y 1.2.1 para sus respectivas ramas. Son versiones específicas de cada componente, no un único número de versión que repare todas las aplicaciones que incorporan el decodificador.

La misma guía enumera Envoy 1.40.0, 1.39.3, 1.38.6 y 1.37.8. Envoy 1.36.12 incluye la corrección, pero esa rama no tiene soporte. Las correcciones de Istio son 1.29.9, 1.30.6 y 1.31.2; 1.29 ha llegado al fin de su vida útil. Ambas excepciones exigen atender a las vías de actualización con soporte, sin confundir la presencia de un parche con mantenimiento continuado.

Bloquear la entrada antes de decodificarla

PatchthePlanet recomienda desactivar temporalmente la decodificación de datos Brotli no confiables cuando no sea posible aplicar el parche de inmediato. Su ejemplo de Express permite identity, gzip y deflate antes de todos los analizadores del cuerpo, y rechaza otras codificaciones o codificaciones apiladas con HTTP 415. Un proxy que decodifique antes necesita su propia protección. La alternativa inflate:false rechaza todos los cuerpos comprimidos, incluidos gzip y deflate.

Para las respuestas obtenidas de otros servidores, quitar br de Accept-Encoding solo expresa una preferencia: el servidor puede enviar Brotli igualmente. El ejemplo de Python retrasa la lectura y decodificación del cuerpo hasta comprobar Content-Encoding. En ese ejemplo están desactivados los reintentos y las redirecciones; añadirlos exige comprobar cada respuesta. Un fetch normal o una lectura automática puede decodificar antes de que la aplicación examine las cabeceras. Los límites de tamaño y las reglas WAF no cubren por sí solos todas las rutas.

Las alternativas tienen un alcance limitado

Para Envoy e Istio, la guía desactiva el descompresor Brotli en ambas direcciones, elimina los ajustes en tiempo de ejecución que podrían reactivarlo y advierte de que las direcciones omitidas están activadas por defecto. Deben conservarse los filtros separados de gzip o zstd; que compartan nombre no justifica eliminarlos todos. Los bytes codificados pueden pasar a componentes posteriores, cuyos decodificadores también necesitan protección.

La alternativa para Next.js establece images.unoptimized globalmente, requiere reconstruir y desplegar de nuevo y comprueba después que /_next/image ya no ejecute el optimizador integrado. No protege los cargadores personalizados, otras peticiones del servidor ni otros decodificadores. En Istio debe comprobarse la configuración efectiva de cada gateway y sidecar; editar un archivo no demuestra que haya cambiado toda la flota en ejecución.

Comprobar el despliegue en ejecución

La guía pide actualizar las versiones fijadas de runtimes e imágenes, reconstruir contenedores o ejecutables que los incorporan y reiniciar o volver a desplegar servicios, workers, tareas programadas y réplicas. Hay que contrastar el binario o la imagen en ejecución con la versión corregida correspondiente. Descargar un parche, actualizar la máquina de compilación o corregir el componente del navegador no demuestra que todos los procesos usen el decodificador corregido.

Como ejemplo hipotético de AISubHub, una CDN podría comprimir las respuestas salientes mientras un worker separado decodifica contenido descargado. Desactivar la compresión de la CDN dejaría intacta la exposición de ese worker; una ruta alternativa al origen también podría eludir un control del proxy. Es un ejemplo de arquitectura, no una inspección de nuestros servidores. La verificación debe cubrir las rutas pertinentes y confirmar que la compresión permitida sigue funcionando.

Por qué importa

La lección práctica es inventariar dónde se decodifica y conectar las correcciones de origen con despliegues reconstruidos y realmente en ejecución. Comprobar versiones y aplicar controles temporales cumple funciones distintas; ni el nombre de una biblioteca compartida ni un cambio aislado de configuración demuestra que toda la flota esté protegida.

Límites y disponibilidad

Revisamos los dos avisos públicos, no código de explotación, todas las notas enlazadas ni sistemas desplegados de clientes. Los detalles de versiones ajenas a Node se atribuyen a la revisión de PatchthePlanet del 23 de octubre. No realizamos pruebas de explotación, no actualizamos runtimes y no auditamos servidores; los materiales no demuestran ataques generalizados ni una reparación universal.

Fuentes y pruebas

Node.js Project · October 2026 security releases

Fecha de la fuente: · Fuente revisada:

Lecturas complementarias

PatchthePlanet · Brotli vulnerability deployment advisory (updated October 23; original publication time unknown)

Fuente revisada:

Contenido editorial asistido por IA y contrastado con fuentes primarias. Las afirmaciones del proveedor se atribuyen; la inclusión no implica recomendación.