¿Qué es la vulnerabilidad CVE-2026-120459 en python-jose?
La vulnerabilidad CVE-2026-120459 afecta a python-jose hasta la versión 3.5.0, permitiendo una omisión grave de autenticación. Analizando incidentes previos como la librería zip de Rust o la escalada de permisos en Java, resulta evidente que la validación estricta de entradas y parámetros es vital. Del mismo modo que ocurre con la escalada de privilegios local, los fallos lógicos pueden comprometer todo el sistema.
El problema surge porque HMACKey y CryptographyHMACKey aceptan secretos HMAC de longitud cero. Cuando la clave de verificación HS256, HS384 o HS512 de una aplicación se resuelve como vacía, como ocurre con un oct JWK con un valor k vacío, los atacantes pueden aprovecharlo.
Este comportamiento anómalo permite la falsificación de tokens con reclamaciones arbitrarias que jwt.decode acepta sin cuestionar.
¿A quién afecta y cuál es su impacto?
El fallo de omisión de autenticación permite que atacantes no autenticados generen JSON Web Tokens falsificados. La función jwt.decode acepta estos tokens debido a que la validación de la longitud del secreto HMAC falla al procesar claves vacías.
La vulnerabilidad tiene una puntuación base CVSS de 7.4 con el vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N. Su gravedad radica en la posibilidad de burlar los mecanismos de seguridad a través de la red sin requerir privilegios previos.
¿Dónde se documentan los detalles técnicos?
Todas las aplicaciones que emplean python-jose hasta la versión 3.5.0 para verificar tokens JWT mediante algoritmos HMAC (HS256, HS384, HS512) son vulnerables. Los sistemas que cargan claves desde configuraciones dinámicas de tipo JWK corren el mayor peligro.
Se pueden consultar más detalles técnicos en los avisos oficiales de [[https://nvd.nist.gov/vuln/detail/CVE-2026-120459|NIST NVD]], [[https://www.cve.org/CVERecord?id=CVE-2026-120459|CVE.org]] y [[https://www.vulncheck.com/advisories/python-jose-through-3.5.0-authentication-bypass-via-empty-hmac-key|VulnCheck]].
¿Cómo me protejo?
Para proteger sus aplicaciones frente a esta incidencia, es fundamental implementar controles estrictos en la gestión de secretos. Puede revisar los detalles de implementación en los backends de [[https://github.com/mpdavis/python-jose/blob/3.5.0/jose/backends/cryptography_backend.py|cryptography]] y [[https://github.com/mpdavis/python-jose/blob/3.5.0/jose/backends/native.py|native]], así como seguir la discusión en el repositorio a través de [[https://github.com/mpdavis/python-jose/issues/398|issue 398 en GitHub]].