Vulnerabilidad de RCE en el popular proyecto de código abierto JsonWebToken

Vulnerabilidad en el popular proyecto de código abierto JsonWebToken (JWT) conduce a la ejecución remota de código

Los investigadores de seguridad de la Unidad 42 de Palo Alto Networks advierten sobre la vulnerabilidad de alta gravedad en el paquete JavaScript de código abierto JsonWebToken que podría explotarse para lograr la ejecución remota de código (RCE).

La vulnerabilidad, que se rastrea como CVE-2022-23529 (puntuación CVSS de 7,6), se encontró en la función de verificación del paquete y puede explotarse mediante una solicitud JSON JWT malintencionada.

JsonWebToken es un paquete JavaScript de código abierto que le permite verificar y firmar solicitudes de token web (JWT). JsonWebToken se usa en muchas aplicaciones para autenticación y autorización. El proyecto ha sido desarrollado y mantenido por el equipo de Auth0 y tiene más de 9 millones de descargas semanales.

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.

Durante el proceso de autenticación, las credenciales proporcionadas por el usuario se envían al extremo de autenticación, que valida la información y emite un JWT firmado con una clave secreta. Cuando un usuario solicita acceso a los recursos, la aplicación envía una solicitud que contiene un JWT en el encabezado de autorización, que se verifica mediante la clave secreta.

La vulnerabilidad está relacionada con la función de verificación de JsonWebToken , y el método acepta tres parámetros: el token, secretOrPublicKey y opciones. Debido a la falta de una verificación en el 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.

Cuando no se proporcionan algoritmos permitidos, el paquete asigna automáticamente los valores dentro de un archivo proporcionado por el parámetro vulnerable y utiliza ciegamente uno de sus métodos.

Por eso, un atacante puede abusar del parámetro para proporcionar un objeto malicioso a la función de verificación, anular su método y lograr la escritura arbitraria de archivos. La misma técnica también se puede utilizar para lograr la ejecución remota de código (RCE), con una carga útil ligeramente modificada, dicen los investigadores.

Sin embargo, el investigador 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 la explotación y reduciría la calificación de gravedad a 7.6/10.

La vulnerabilidad, CVE-2022-23529, afecta a JsonWebToken versión 8.5.1 y anteriores y se solucionó con el lanzamiento de JsonWebToken versión 9.0.0. Se recomienda a los usuarios que actualicen a la versión parcheada lo antes posible.