Una vulnerabilidad crítica en la biblioteca de JavaScript expone las aplicaciones a ataques remotos

Una vulnerabilidad crítica de seguridad (CVE-2025-7783) ha sido identificada en el popular paquete JavaScript form-data. Esta falla podría exponer miles de aplicaciones a ataques remotos debido a la generación predecible de valores límite. Jordan Harband (ljharb), un destacado desarrollador de JavaScript y ex editor de especificaciones TC39, hizo pública esta vulnerabilidad hace cinco días.

Descripción de la Vulnerabilidad

La vulnerabilidad surge de la dependencia de form-data en la función Math.random() de JavaScript para generar valores límite en datos codificados de formularios multipart. Aunque aparentemente inofensiva, esta elección de diseño es crítica porque Math.random() produce valores predecibles y pseudoaleatorios que atacantes sofisticados pueden explotar para inyectar parámetros maliciosos en solicitudes HTTP.

Las versiones afectadas del paquete form-data incluyen todas las anteriores a la 2.5.4, las versiones 3.0.0 a 3.0.3, y las versiones 4.0.0 a 4.0.3. Las organizaciones que utilizan estas versiones están bajo riesgo inmediato de ataques de inyección de parámetros, lo que podría comprometer sus sistemas internos y exponer datos sensibles.

Mecanismo de Explotación

Los atacantes pueden explotar esta vulnerabilidad observando los valores de Math.random() generados por las aplicaciones objetivo y utilizando técnicas matemáticas para predecir el estado interno del generador de números pseudoaleatorios (PRNG). Una vez determinado el estado del PRNG, pueden pronosticar futuros valores límite y crear cargas útiles maliciosas que contengan límites previstos, seguidos de campos controlados por el atacante.

Para que el ataque sea exitoso, se requieren dos condiciones: el atacante debe poder observar otros valores de Math.random() producidos por la aplicación objetivo y debe controlar al menos un campo en una solicitud de datos de formulario. Un vector de observación común son los encabezados de ID de solicitud utilizados para el seguimiento distribuido, los cuales a menudo emplean Math.random() para su generación. Las aplicaciones son vulnerables cuando usan form-data para transmitir datos controlados por el usuario a sistemas backend, mientras revelan valores de Math.random() a través de diversos canales.

Una explotación exitosa permite a los atacantes inyectar parámetros arbitrarios en las solicitudes, lo que podría sobrescribir valores deseados o añadir datos maliciosos que evaden los controles de seguridad.

Impacto y Recomendaciones

La vulnerabilidad ha recibido una calificación crítica en el CVSS 4.0 debido a su vector de ataque basado en red y su alto potencial de impacto tanto en la confidencialidad de los datos como en la integridad del sistema. Investigadores de seguridad ya han desarrollado exploits de prueba de concepto que demuestran escenarios prácticos de explotación.

Es imperativo que las organizaciones actualicen inmediatamente a las versiones parcheadas: 2.5.4, 3.0.4 o 4.0.4, dependiendo de su implementación actual. Los parches reemplazan Math.random() con una generación de números aleatorios criptográficamente segura, eliminando la predictibilidad que permite estos ataques.