11 ene 2023

Actualización grave para la biblioteca JWT (JsonWebToken) de NPM (Parchea!)

Auth0 corrigió una vulnerabilidad de ejecución remota de código (RCE) en la biblioteca de código abierto inmensamente popular JsonWebToken utilizada por más de 22.000 proyectos y descargada más de 36 millones de veces por mes en NPM.

El proyecto JsonWebToken es una biblioteca de código abierto que se utiliza para crear, firmar y verificar tokens web JSON. La biblioteca se utiliza en proyectos de código abierto creados por Microsoft, Twilio, Salesforce, Intuit, Box, IBM, Docusign, Slack, SAP y muchos más.

La vulnerabilidad identificada como CVE-2022-23529 y afecta las versiones de JsonWebToken anteriores a la 9.0.0, lanzadas el 21 de diciembre, justo antes de las vacaciones.

"JSON Web Token (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de transmitir información de forma segura entre las partes como un objeto JSON. Esta información se puede verificar y confiar porque está firmada digitalmente", explica Sitio jwt.io de Auth0.

Okta Auth0 desarrolla y mantiene el proyecto y tiene más de 9 millones de descargas semanales en el repositorio de paquetes NPM y es utilizada por más de 22.000 proyectos, lo que refleja su adopción masiva.

La explotación exitosa de CVE-2022-23529 podría permitir a los atacantes eludir los mecanismos de autenticación, acceder a información confidencial y robar o modificar datos.

Sin embargo, Unit 42 advierte que los actores de amenazas primero tendrían que comprometer el proceso de administración de secretos entre una aplicación y un servidor JsonWebToken, lo que dificultaría su explotación y reduciría la clasificación de gravedad a 7,6/10.

Envenenamiento de secreto JWT

La vulnerabilidad CVE-2022-23529 fue descubierta por Unit42 de Palo Alto Networks el 13 de julio de 2022 y se informó a Auth0 de inmediato. Los investigadores descubrieron que los actores de amenazas podían lograr la ejecución remota de código en servidores que usaban JsonWebToken después de verificar un token JWS creado con fines malintencionados.

La falla que permite esto está en el método verify() de JsonWebToken, que se usa para verificar un JWT y devolver la información decodificada. Este método acepta tres parámetros: el token, la clave secreta o pública y las opciones. JsonWebToken hace una validación insegura de entradas en la función jwt.verify.

Sin embargo, debido a la falta de verificación del parámetro 'secretOrPublicKey' para determinar si es una cadena o un búfer, los atacantes pueden enviar un objeto especialmente diseñado para realizar una escritura de archivo arbitraria en la máquina de destino.

Usando la misma falla pero una carga útil ligeramente diferente en la solicitud, Unit42 informa que sería prácticamente posible lograr la ejecución remota de código.

Esta vulnerabilidad se clasifica como de "gravedad alta" (puntaje CVSS 3.1: 7.6) y no es crítica porque es complicada de aprovechar, ya que los actores de amenazas solo pueden explotarla dentro del proceso de administración de secretos.

"Solo se ve afectado si se permite que entidades que no son de confianza modifiquen el parámetro de recuperación de claves de jwt.verify() en un host que usted controla", dice el aviso de seguridad en GitHub.

El equipo de Auth0 confirmó que estaban trabajando en una solución en agosto de 2022 y, finalmente, el 21 de diciembre de 2022, se lanzó un parche con JsonWebToken versión 9.0.0.

La solución incluye la implementación de controles adicionales para el parámetro secretOrPublicKey, lo que evita que analice objetos maliciosos.

Debido a que JsonWebToken es una biblioteca de código abierto ampliamente utilizada, la falla tiene repercusiones masivas en la cadena de suministro y continuará teniendo durante un período prolongado hasta que la mayoría de los proyectos se hayan actualizado a una versión segura.

Si bien la falla es difícil de explotar, el afán de los actores de amenazas por abusar de ella no puede subestimarse dada la cantidad de objetivos potenciales, por lo que aplicar la actualización de seguridad disponible debería ser una prioridad para todos los administradores de sistemas.

Fuente: BC

Suscríbete a nuestro Boletín

2 comentarios:

  1. Gracias por la información, muy útil

    ResponderBorrar
  2. La comunidad está pidiendo dar de baja este CVE, argumentando que no sería una vulnerabilidad: https://github.com/github/advisory-database/pull/1595

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!