Skip to content

[SECURITY] Vulnerabilidad de alta gravedad en la dependencia xlsx (#1) #42

@SharmarAndrey

Description

@SharmarAndrey

Descripción del problema:

  • En el proyecto CodeQuestAPI se ha detectado una vulnerabilidad de alta gravedad relacionada con el paquete xlsx. Este problema fue identificado mediante Dependabot:

image

y el comando npm audit:

image

Las vulnerabilidades encontradas son las siguientes:

  1. Prototype Pollution en sheetJS (GitHub Advisory)

  2. Regular Expression Denial of Service (ReDoS) (GitHub Advisory)

Ambas vulnerabilidades están clasificadas como de alta gravedad.

Archivos afectados:

  • index.controllers.js: El paquete xlsx se utiliza para leer y escribir archivos Excel, específicamente en la función getTemplateQuestions.

Impacto esperado:

  • Después de recibir la notificación sobre el problema, se espera que se proponga una solución que elimine la vulnerabilidad y asegure la aplicación, manteniendo su funcionalidad intacta.

Impacto actual:

  • El uso del paquete xlsx representa una amenaza a la seguridad de la aplicación, ya que estas vulnerabilidades pueden ser explotadas por atacantes para comprometer la integridad del sistema.

Posibles causas y soluciones:

  1. Actualizar xlsx a una versión segura:
  • Se recomienda actualizar el paquete xlsx a la versión 0.20.2 o posterior, en la cual se han corregido las vulnerabilidades. Puede actualizar la dependencia en el archivo package.json de la siguiente manera:

  • Ir al fitchero package.json

  • Cambiar el codigo del campo "dependencies":

image

  • Luego ejecute el siguiente comando para instalar la versión actualizada:

npm install

  1. Reemplazar xlsx por una biblioteca alternativa:
  • Si la actualización no es posible, también se puede considerar reemplazar xlsx por una biblioteca alternativa como exceljs o node-xlsx, que proporcionan funcionalidades similares sin las vulnerabilidades mencionadas. Por ejemplo, exceljs se puede instalar con el siguiente comando:

npm install exceljs

  • Luego, actualice el código en index.controllers.js, reemplazando los métodos de xlsx por métodos equivalentes de exceljs.
  1. Monitorear actualizaciones:
  • Recomiendo seguir monitoreando el repositorio de xlsx para obtener información sobre posibles correcciones. Una vez que esté disponible una actualización, se deberá actualizar la dependencia a una versión segura.
  1. Minimización de riesgos:
  • Mientras la vulnerabilidad no se haya solucionado, es crucial asegurarse de que solo se procesen datos de confianza en las operaciones que utilizan xlsx. Esto ayudará a minimizar los riesgos potenciales asociados con la explotación de las vulnerabilidades.

Pruebas de la solución:

  • Actualice el paquete xlsx a la versión 0.20.2 o superior con el siguiente comando:

npm install xlsx@>=0.20.2

  • Realice una prueba completa de la funcionalidad de la aplicación para verificar que todo funcione correctamente después de la actualización. Preste especial atención a las operaciones de lectura y escritura de archivos Excel.

Si se opta por reemplazarxlsxcon exceljs, realice pruebas adicionales para asegurar que los cambios no afecten la funcionalidad de la aplicación.

Como detectar la problema en github(video):

security-xlsx

Como detectar la problema en VS Code(video):

security-xlsx2

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions