Están disponibles las versiones corregidas de la plataforma de servidor JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, que solucionan 8 vulnerabilidades, de las cuales 4 tienen un alto nivel de peligrosidad:
- CVE-2024-21892 — una posibilidad de que un usuario no privilegiado inyecte código que herede privilegios elevados con los que se ejecuta el proceso. La vulnerabilidad se debe a un error en la implementación de excepciones que permite manejar variables de entorno establecidas por un usuario no privilegiado durante un proceso con privilegios elevados. La excepción debería haberse otorgado solo para los privilegios CAP_NET_BIND_SERVICE, pero debido a un error se aplicaba también a otros privilegios.
- CVE-2024-22019 — denegación de servicio mediante el agotamiento de recursos disponibles (carga de CPU y consumo de ancho de banda) al procesar solicitudes chunked específicamente formateadas con el servidor HTTP integrado, lo que resulta en la lectura de una cantidad ilimitada de bytes en una única conexión.
- CVE-2024-21896 — salida fuera del directorio base en las rutas de archivos. La vulnerabilidad permite eludir la normalización de rutas de archivo utilizando path.resolve() al pasar una ruta utilizando la clase Buffer. Para obtener tal ruta, después de la verificación, se invoca el método Buffer.from(), pero en la aplicación puede utilizarse la llamada Buffer.prototype.utf8Write, lo que lleva a la modificación del contenido después de la ejecución de path.resolve() y causa la vulnerabilidad.
- CVE-2024-22017 — la llamada a setuid() no restablecía todos los privilegios. En particular, setuid() no afecta a las operaciones io_uring utilizadas en libuv si han sido inicializadas antes de la llamada a setuid().
- CVE-2023-46809 — vulnerabilidad en la API privateDecrypt(), que permite la ejecución de un ataque Marvin para descifrar RSA basado en la medición de tiempos de operación.
- CVE-2024-21891 — posibilidad de eludir el modelo de control de acceso al utilizar controladores personalizados para la normalización de rutas de archivo.
- CVE-2024-21890 — manejo incorrecto de las máscaras en los parámetros «—allow-fs-read» y «—allow-fs-write». Por ejemplo, «—allow-fs-read=\/home\/node\/.ssh\/*.pub» otorgará acceso a todo el contenido de «.ssh\/», y no solo a los archivos con la extensión «.pub», ya que la máscara «*» se procesa como el último elemento de la ruta.
- CVE-2024-22025 — denegación de servicio debido al consumo de recursos al decodificar datos comprimidos en formato Brotli, obtenidos a través de la llamada fetch().
Además, se puede destacar la formación de la versión 1.48.0 de la biblioteca libuv, utilizada en Node.js para la multiplexión de conexiones y el procesamiento asíncrono de entrada/salida. Además de Node.js, la biblioteca también se utiliza en los servidores DNS BIND 9 y Knot DNS, en el servidor HTTP H2O, el marco de trabajo Lua Luvit, una máquina virtual MoarVM, el lenguaje Julia y el marco de trabajo uvloop de Python. En la nueva versión se ha corregido una vulnerabilidad (CVE-2024-24806) que se manifiesta en proyectos que utilizan libuv y permite llevar a cabo un ataque SSRF (Server-side request forgery) para obtener acceso a una API interna. La vulnerabilidad surgió debido a que el nombre del host se recortaba en la función uv_getaddrinfo() a 256 caracteres en la etapa anterior a la resolución del dominio a través de la función getaddrinfo(), lo que puede resultar en la identificación incorrecta IP y eludir las comprobaciones. Por ejemplo, los servicios tipo MySpace, que crean subdominios del tipo «username.example.com», pueden ser atacados especificando un nombre de usuario largo.
También se lanzó una actualización del cliente HTTP undici 5.28.3 utilizado en Node.js, en la que se corrigió una vulnerabilidad (CVE-2024-24758) provocada por la falta de limpieza del encabezado HTTP Proxy-Authorization al redirigir solicitudes.
Fuente: opennet.ru
