Recientemente, el equipo de Express se ha enterado de una serie de vulnerabilidades de seguridad en el proyecto Express. Hemos publicado una serie de parches para corregir estas vulnerabilidades.
Advertencia
Recomendamos encarecidamente que actualices estos módulos a la versión recomendada (o la más reciente) lo antes posible.
Las siguientes vulnerabilidades han sido corregidas:
- Vulnerabilidad de alta severidad CVE-2024-45590 en el middleware body-parser
- Vulnerabilidad de alta severidad CVE-2024-47178 en el middleware basic-auth-connect
- Vulnerabilidad de severidad moderada CVE-2024-43796 en el núcleo de Express
- Vulnerabilidad de severidad moderada CVE-2024-43799 en el módulo utilitario send
- Vulnerabilidad de severidad moderada CVE-2024-43800 en el middleware serve-static
- Vulnerabilidad de severidad moderada CVE-2024-45296 en el módulo utilitario path-to-regexp
Vulnerabilidad de alta severidad CVE-2024-45590 en el middleware body-parser
body-parser versión <1.20.3 es vulnerable a denegación de servicio cuando la codificación URL está activada
Un actor malicioso usando un payload especialmente diseñado podría inundar el servidor con una gran cantidad de solicitudes, resultando en denegación de servicio.
Affected versions: <1.20.3
Patched versions: >=1.20.3
Esta vulnerabilidad fue descubierta durante la auditoría OSTIF a Express y fue mitigada por el equipo de triaje de seguridad de Express.
Para más detalles, ver GHSA-qwcr-r2fm-qrc7.
Vulnerabilidad de alta severidad CVE-2024-47178 en el middleware basic-auth-connect
basic-auth-connect usa una comparación de igualdad insegura respecto al tiempo
basic-auth-connect <1.1.0 usa una comparación de igualdad insegura respecto al tiempo que puede filtrar información de temporización
Affected versions
<1.1.0
Patched versions
>=1.1.0
Esta vulnerabilidad fue descubierta durante la auditoría OSTIF a Express y fue mitigada por el equipo de triaje de seguridad de Express.
Hay más detalles disponibles en GHSA-7p89-p6hx-q4fw
Vulnerabilidad de severidad moderada CVE-2024-43796 en el núcleo de Express
El paquete principal de express es vulnerable a ataques de cross-site scripting (XSS) a través de response.redirect().
En la versión <4.20.0 de Express, pasar entrada de usuario no confiable—incluso después de sanitizarla—a response.redirect() puede ejecutar código no confiable.
Affected versions:
<4.20.0>=5.0.0-alpha.1,<5.0.0
Patched versions:
>=4.20.0>=5.0.0
Esta vulnerabilidad fue descubierta durante la auditoría OSTIF de Express y fue mitigada por el equipo de triaje de seguridad de Express.
Para más detalles, ver GHSA-qw6h-vgh9-j6wx.
Vulnerabilidad de severidad moderada CVE-2024-43799 en el módulo utilitario send
El módulo utilitario send es vulnerable a inyección de plantillas que puede llevar a vulnerabilidad a ataques de cross-site scripting (XSS).
Pasar entrada de usuario no confiable—incluso después de sanitizarla—a SendStream.redirect() puede ejecutar código no confiable.
Affected versions: < 0.19.0
Patched versions: >=0.19.0
Esta vulnerabilidad fue descubierta durante la auditoría OSTIF de Express y fue mitigada por el equipo de triaje de seguridad de Express.
Para más detalles, ver GHSA-m6fv-jmcg-4jfg.
Vulnerabilidad de severidad moderada CVE-2024-43800 en el middleware serve-static
El módulo serve-static es un middleware vulnerable a inyección de plantillas que puede llevar a vulnerabilidad a ataques de cross-site scripting (XSS).
Pasar entrada de usuario no confiable—incluso después de sanitizarla—a redirect() puede ejecutar código no confiable.
Affected versions:
< 1.16.0>=2.0.0,<2.1.0
Patched versions:
>=1.16.0>=2.1.0
Esta vulnerabilidad fue descubierta durante la auditoría OSTIF de Express y fue mitigada por el equipo de triaje de seguridad de Express.
Para más detalles, ver GHSA-cm22-4g7w-348p
Vulnerabilidad de severidad moderada CVE-2024-45296 en el módulo utilitario path-to-regexp
El módulo utilitario path-to-regexp es vulnerable a ataques de denegación de servicio por expresiones regulares (ReDoS).
Se genera una expresión regular defectuosa cada vez que tienes dos parámetros dentro de un único segmento, separados por algo que no es un punto (.). Por ejemplo, /:a-:b.
Usar /:a-:b producirá la expresión regular /^\/([^\/]+?)-([^\/]+?)\/?$/. Esto puede ser explotado por una ruta como /a${'-a'.repeat(8_000)}/a. OWASP tiene un buen ejemplo de por qué esto ocurre, pero en esencia, el /a al final asegura que esta ruta nunca coincidiría, pero debido al backtracking ingenuo, seguirá intentando cada combinación de :a-:b en los 8,000 -a repetidos.
Como JavaScript es single-threaded y la coincidencia de regex se ejecuta en el hilo principal, un rendimiento deficiente bloqueará el event loop y puede llevar a un DoS. En benchmarks locales, explotar el regex inseguro resultará en un rendimiento más de 1000x peor que el regex seguro. En un entorno más realista, usando Express v4 y diez conexiones concurrentes se obtiene una latencia promedio de ~600ms vs 1ms.
Affected versions:
>=4.0.0,<8.0.0>=0.2.0,<1.9.0<0.1.10>=2.0.0,<3.3.0>=4.0.0,<6.3.0
Patched versions:
>=8.0.0>=1.9.0>=0.1.10>=3.3.0>=6.3.0
Gracias a Blake Embrey quien reportó y creó el parche de seguridad.
Para más detalles, ver GHSA-9wv6-86v2-598j