Vulnerabilidades en protobuf.js Ponen en Riesgo Aplicaciones Node.js

Publicado el

Seis Vulnerabilidades Críticas en protobuf.js

Investigadores de ciberseguridad han identificado seis vulnerabilidades en protobuf.js, una implementación de Protocol Buffers en JavaScript y TypeScript. Estas fallas, conocidas como Proto6, pueden permitir la ejecución remota de código (RCE) y ataques de denegación de servicio (DoS) en aplicaciones que utilizan esta librería.

Según el investigador de seguridad de Cyera, Assaf Morag, un único esquema protobuf malicioso o un payload diseñado podría provocar fallos o corrupción en tiempo de ejecución, e incluso permitir la ejecución de código en entornos afectados. Protobuf es un mecanismo gratuito y de código abierto utilizado para la serialización de datos estructurados, originalmente desarrollado por Google y liberado al público en 2008.

Impacto de las Vulnerabilidades

Las vulnerabilidades afectan a aplicaciones Node.js que utilizan protobuf.js, así como a bibliotecas de clientes de Google Cloud, frameworks de mensajería como Baileys, y flujos de trabajo de CI/CD. Cualquier servicio Node.js que deserialice datos de Protobuf o genere código a partir de esquemas con protobuf.js es susceptible a estos problemas.

A continuación, se detallan las vulnerabilidades identificadas: - CVE-2026-44289 (CVSS 7.5): DoS mediante recursión sin límites en protobuf. - CVE-2026-44290 (CVSS 7.5): DoS global al cargar esquemas con rutas de opciones inseguras. - CVE-2026-44291 (CVSS 8.1): Gadget de generación de código tras contaminación de prototipos. - CVE-2026-44292 (CVSS 5.3): Inyección de prototipos en constructores de mensajes generados. - CVE-2026-44294 (CVSS 5.3): DoS desde nombres de campo diseñados en código generado. - CVE-2026-44295 (CVSS 8.7): Inyección de código en salida estática de pbjs a partir de nombres de esquemas maliciosos.

Causas y Escenarios de Ataque

Cyera ha señalado que todas las vulnerabilidades surgen de la gestión de esquemas y metadatos considerados como confiables por defecto. Esta falta de validación puede influir en el comportamiento de la aplicación y llevar a la ejecución de código. Aunque la explotación de estas vulnerabilidades generalmente requiere condiciones específicas, estas son cada vez más comunes en ecosistemas de datos y IA que intercambian datos, esquemas y archivos de configuración entre servicios, repositorios, plataformas en la nube e integraciones de terceros.

Un posible escenario de ataque implica que un actor malicioso introduzca un esquema protobuf dañino para comprometer flujos de trabajo de CI/CD, lo que podría filtrar secretos de construcción (CVE-2026-44295). Asimismo, se podría hacer caer servicios de Node.js, como bots de WhatsApp construidos con Baileys, mediante un mensaje diseñado (CVE-2026-44292).

La vulnerabilidad más grave es CVE-2026-44291, que permite la ejecución de código cuando una aplicación Node.js acepta entrada controlada por el atacante. Según el investigador de seguridad Vladimir Tokarev, esta entrada puede llegar a un gadget de contaminación de prototipos, y posteriormente, mediante el uso de protobuf.js, se puede codificar o decodificar un mensaje. Dado que protobuf.js resuelve nombres de tipo a través de búsquedas de propiedades simples, un Object.prototype contaminado puede hacer que una cadena controlada por un atacante parezca un primitivo válido de Protobuf.

Protobuf.js luego inserta esa cadena en una función generadora de codificadores o decodificadores y la compila, permitiendo así la ejecución de JavaScript arbitrario dentro del proceso Node.js.

Versiones Afectadas

Las versiones vulnerables de protobuf.js son aquellas que son iguales o anteriores a la 8.0.0. Los desarrolladores deben actualizar a las versiones más recientes y revisar sus implementaciones para mitigar los riesgos asociados con estas vulnerabilidades.

Fuente

Ver noticia original