Vulnerabilidad de riesgo crítico en el paquete “scratch-svg-renderer” de Node.js

A modo de contextualizar la descripción de la vulnerabilidad, una breve definición de:

  • Node.js, es un entorno de ejecución multiplataforma de código abierto basado en el lenguaje Javascript y orientado a eventos asíncronos.
  • Node Package Manager o npm, es el gestor de paquetes por defecto para Node.js, el cual permite obtener cualquier librería con una simple línea de código.
  • Scratch, es un lenguaje de programación visual desarrollado por el Grupo Lifelong Kindergarten del MIT Media Lab. Sus características vinculadas al fácil entendimiento del pensamiento computacional han hecho que sea muy difundido en el ámbito de la educación.
  • scratch-svg-renderer, es un paquete de npm creado para la importación de archivos SVG (Gráficos Vectoriales Escalares) a Scratch.

¿Qué pasó?

Investigadores de seguridad han descubierto recientemente una vulnerabilidad identificada con el CVE-2020-7750 de riesgo crítico (calificación de riesgo 9.6), que afecta al paquete de Node.js llamado scratch-svg-renderer en versiones anteriores a la 0.2.0-prerelease.20201016121710. La explotación exitosa de este fallo permitiría a un atacante remoto inyectar código malicioso.

El fallo en cuestión, reside en la función loadString y se da debido a que esta no escapa correctamente los archivos SVG. Un atacante remoto podría aprovechar esto para inyectar elementos arbitrarios en el DOM (Modelo de Objetos del Documento) a través de la función “_transformMeasurements”. A continuación se puede visualizar la porción de código vulnerable con los cambios realizados en el parche de seguridad:

Recomendaciones:

  • Actualizar el paquete scratch-svg-renderer a la versión 0.2.0-prerelease.20201019174008 o posteriores, desde el siguiente enlace.

Referencias:

Compartir: