Una biblioteca compartida parcheada en el centro conectada a decenas de paquetes en un servidor

Brotli en FreeBSD: un solo pkg upgrade corrige el fallo en 64 paquetes

En un servidor FreeBSD, corregir el fallo de Brotli que la agencia estadounidense CISA incluyó el 27/10/2026 en su catálogo de vulnerabilidades explotadas bastó con actualizar un paquete: la biblioteca compartida, que en el repositorio de FreeBSD 15 usan 64 paquetes. Lo explica Vivian Voss en un análisis que contrapone ese modelo al de las aplicaciones que llevan su propia copia de Brotli dentro, como el binario oficial de Node.js.

Las claves de parchear Brotli en FreeBSD con un solo paquete en 20 segundos

  • El fallo, CVE-2026-111497, es una escritura fuera de límites en el decodificador de Brotli, corregida en la versión 1.2.1.
  • En FreeBSD, 64 paquetes usan la biblioteca compartida y se corrigen con pkg upgrade.
  • Las aplicaciones que integran su propia copia de Brotli necesitan cada una su actualización.

La vulnerabilidad, conocida como HTTP2Shell, Node2Shell o Broccoli2Shell, permite a un atacante sin autenticar enviar datos comprimidos manipulados que corrompen la memoria del proceso que los descomprime. Según el Centro Canadiense de Ciberseguridad, puede provocar caídas, fugas de información o ejecución de código, y afecta a las versiones de Brotli anteriores a 1.0.10, 1.1.1 y 1.2.1 en cada rama. opensecurity ya explicó que el fallo alcanza a .NET, ClickHouse y Apache Arrow, además de Node.js. Según BleepingComputer, las agencias federales de Estados Unidos tienen hasta el 10 de noviembre para corregirlo.

Cuatro comandos en lugar de un inventario

Voss describe la mañana después de la alerta en un servidor FreeBSD como cuatro comandos:

  • pkg audit -F descarga la base de datos de vulnerabilidades de FreeBSD y la compara con los paquetes instalados.
  • pkg shlib -R, con el nombre de la biblioteca, lista todos los paquetes que la enlazan.
  • pkg upgrade instala la versión corregida y programa la reinstalación de los paquetes que dependen de ella.
  • service -R reinicia los servicios locales para que ninguno siga con el código antiguo en memoria.

El manual de pkg upgrade lo deja claro: todos los paquetes que requieren esa biblioteca compartida se añaden a la lista de trabajo como tareas de reinstalación. Según la autora, la base de datos de vulnerabilidades de FreeBSD incluyó Brotli anterior a 1.2.1 el 22 de octubre, el port pasó a la versión 1.2.1 el 23 y, cuando CISA añadió el fallo a su catálogo, la corrección llevaba cuatro días disponible.

Por qué FreeBSD evita las bibliotecas integradas

No es casualidad. El manual para quienes mantienen ports en FreeBSD tiene un apartado titulado «Por qué las bibliotecas integradas son malas», y su primer argumento es el de esta semana: una corrección publicada por el proyecto original puede no llegar a la copia integrada en el port. Por eso los ports enlazan la biblioteca del sistema mediante LIB_DEPENDS siempre que pueden. Node.js integra Brotli por defecto y el port de FreeBSD lo desactiva con la opción --shared-brotli.

El ejemplo más claro está en el mismo repositorio. El paquete node24 seguía en la versión 24.21.0, sin las correcciones propias de Node.js de octubre, pero su Brotli ya estaba corregido porque el decodificador nunca estuvo dentro del binario. Node.js defiende la integración porque permite distribuir un único binario con las versiones correctas de todas las dependencias; el día de un fallo, eso obliga a esperar una publicación por cada copia. Tanium resumió la parte difícil como encontrar todas las copias de Brotli que uno tiene. Debian comparte bibliotecas como FreeBSD y corrigió la suya, pero, según Voss, su Node.js es la versión 20, sin soporte desde abril, así que quien necesita uno actual recurre al binario oficial con su propio Brotli.

El modelo tiene límites que la autora reconoce: los paquetes de Python instalados con pip y las aplicaciones Electron también integran sus propias copias en FreeBSD; los paquetes van unos días por detrás del árbol de ports, cada jail necesita su propio pkg upgrade y las excepciones, como Wine, requieren el visto bueno del equipo de ports.

Preguntas frecuentes

¿Qué es CVE-2026-111497?

Una vulnerabilidad crítica de escritura fuera de límites en el decodificador de Brotli, la biblioteca de compresión de Google, que CISA incluyó el 27/10/2026 en su catálogo de fallos explotados.

¿Qué versión de Brotli corrige el fallo?

Las versiones 1.0.10, 1.1.1 y 1.2.1, según la rama.

¿Cómo se corrige en FreeBSD?

Con pkg audit -F para detectarlo, pkg upgrade para instalar la biblioteca corregida y reinstalar sus dependientes, y service -R para reiniciar los servicios.

¿Por qué es más difícil en otros sistemas?

Porque las aplicaciones que integran su propia copia de Brotli, como el binario oficial de Node.js, necesitan cada una su propia actualización.

Fuentes:

Scroll al inicio