Se ha descubierto una nueva vulnerabilidad en el famoso proyecto de código abierto JsonWebToken. Esta vulnerabilidad identificada como CVE-2022-23529 tiene una clasificación de gravedad alta CVSS 7.6. Aprovechando esta vulnerabilidad los atacantes podrían lograr la ejecución remota de código (RCE). El proyecto JsonWebToken (JWT) es una biblioteca de código abierto que se utiliza para crear, firmar y verificar tokens web JSON, principalmente con fines de autorización y autenticación.
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. Generalmente los ataques a los JWT involucran diferentes técnicas de falsificación que abusan de las implementaciones de JWT con errores.
Uno de los métodos que nos ofrece JsonWebToken es “verify”, este método recibe tres parámetros: token, secretOrPublicKey y options. Esta función verifica la validez del JWT y devuelve la parte de la carga útil decodificada.
Ya que JWT es una biblioteca de código abierto ampliamente utilizada, la vulnerabilidad tiene repercusiones masivas en la cadena de suministro y continuará hasta que la mayoría de los proyectos se hayan actualizado a una versión segura.
Al ejecutar la función de verificación con un objeto malicioso, se escribe un archivo arbitrario en la máquina de alojamiento. En esta etapa, secretOrPublicKey recibe el valor de mal_obj, que es un objeto malicioso con una función toString() anulada.
El código malicioso se ejecutará y saldrá del proceso del nodo antes de la verificación .includes(‘BEGIN CERTIFICATE’) , lo que dará como resultado un archivo de escritura arbitrario.
Con la misma técnica, es posible lograr la ejecución remota de código (RCE), pero tendremos que modificar ligeramente nuestra carga útil usando el módulo child_process.
El 21 de diciembre de 2022 se lanzó un parche con JsonWebToken versión 9.0.0. Incluye controles adicionales para el parámetro secretOrPublicKey, evitando que analice objetos maliciosos.
Recomendaciones
Si utiliza el paquete JsonWebToken versión 8.5.1 o una versión anterior, actualice al paquete JsonWebToken versión 9.0.0, que incluye un parche para esta vulnerabilidad.
Referencias
- https://www.bleepingcomputer.com/news/security/auth0-fixes-rce-flaw-in-jsonwebtoken-library-used-by-22-000-projects/
- https://unit42.paloaltonetworks.com/jsonwebtoken-vulnerability-cve-2022-23529/
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-23529
- https://nvd.nist.gov/vuln/detail/CVE-2022-23529