Vulnerabilidades de Node.js en Ubuntu
Node.js es un entorno de ejecución de JavaScript multiplataforma y de código abierto basado en el potente motor V8 de Chrome. Permite ejecutar código JavaScript fuera de un navegador web, lo que lo hace popular para crear aplicaciones en tiempo real y servicios de transmisión de datos. Sin embargo, como cualquier software, no es inmune a las vulnerabilidades de seguridad. Recientemente, se descubrieron múltiples vulnerabilidades en Node.js que podían conducir a la elusión de mecanismos de políticas o a la escalada de privilegios. Afortunadamente, estas vulnerabilidades se han solucionado en las recientes actualizaciones de seguridad de Ubuntu.
Vulnerabilidades de Node.js corregidas en la última actualización
CVE-2023-32002
En Module._load()
es capaz de eludir el mecanismo de políticas y requerir módulos fuera de las definiciones proporcionadas en el archivo policy.json para un módulo dado. Esta vulnerabilidad afecta a todos los usuarios que utilizan el mecanismo de políticas en todas las versiones activas de Node.js: 16.x, 18.x, y 20.x. Un atacante podría explotar esta vulnerabilidad engañando a un usuario o a un sistema automatizado para que abra un archivo de entrada especialmente diseñado, saltándose así el mecanismo de políticas.
CVE-2023-32006
De forma similar a CVE-2023-32002, el module.constructor.createRequire()
también puede saltarse el mecanismo de políticas, permitiendo el requerimiento de módulos fuera de las definiciones de policy.json. Esta vulnerabilidad afecta a todos los usuarios que utilizan el mecanismo de políticas en las versiones 16.x, 18.x y 20.x de Node.js. Si un usuario o un sistema automatizado abre un archivo de entrada especialmente diseñado, un atacante remoto podría aprovechar este problema para eludir el mecanismo de políticas.
CVE-2023-32559
Existe una vulnerabilidad de escalada de privilegios en Node.js, que afecta a todas las líneas de versiones activas (16.x, 18.x y 20.x). La API obsoleta process.binding()
se puede utilizar para eludir el mecanismo de la política mediante la solicitud de módulos internos, en última instancia, la explotación de process.binding('spawn_sync')
para ejecutar código arbitrario fuera de los límites definidos en un archivo policy.json.
CVE-2023-30590
La documentación de Node.js describía incorrectamente la función generateKeys(), lo que provocaba posibles problemas de seguridad en las aplicaciones que utilizaban estas API. Esta vulnerabilidad, aunque no es directamente explotable como las otras, podría hacer que los desarrolladores implementasen soluciones inseguras basándose en documentación incorrecta.
CVE-2023-23920
Se descubrió que Node.js maneja ciertas entradas de forma incorrecta, lo que lleva a una vulnerabilidad de ruta de búsqueda no confiable. Este fallo podría permitir a un atacante buscar y potencialmente cargar datos de UCI mientras se ejecuta con privilegios elevados.
Mitigar los riesgos
El equipo de seguridad de Ubuntu ha publicado actualizaciones para solucionar vulnerabilidades de Node.js en varias versiones de Ubuntu, incluyendo 23.10, 22.04 LTS, 20.04 LTS y 18.04 ESM. Para salvaguardar su entorno Node.js, es crucial actualizar su instalación de Node.js a la última versión disponible. Asegurarse de que su instalación de Node.js está actualizada no sólo protege contra estas vulnerabilidades específicas, sino también contra cualquier problema de seguridad que se descubra en el futuro.
Conclusión
Node.js es una potente herramienta para desarrolladores, pero como cualquier tecnología, requiere mantenimiento y actualizaciones periódicas para seguir siendo segura. Las recientes vulnerabilidades descubiertas y parcheadas por el equipo de seguridad de Ubuntu ponen de relieve la importancia de mantenerse alerta y proactivo en la gestión del software. Actualizando puntualmente tus instalaciones de Node.js, puedes proteger tus aplicaciones y sistemas de posibles explotaciones y mantener un sistema seguro y resistente.
Además, considere el uso de live patching para proteger sus sistemas Ubuntu sin tiempo de inactividad. A diferencia de los métodos tradicionales de aplicación de parches, live patching permite aplicar parches de seguridad críticos a un núcleo en ejecución sin necesidad de reiniciar. Este enfoque resulta en un tiempo de inactividad mínimo para su sistema, asegurando su funcionamiento continuo al tiempo que mejora su postura de seguridad.
KernelCare Enterprise de TuxCare ofrece parches en vivo automatizados para las principales distribuciones de Linux, como Ubuntu, Debian, RHEL, CentOS, AlmaLinux, Rocky Linux, Oracle Linux y Amazon Linux, entre otras.
Envíe preguntas relacionadas con los parches a un experto en seguridad de TuxCare para aprender a modernizar su enfoque de parcheado de Linux.
Fuente: USN-6822-1, USN-6735-1