
Este proyecto demuestra la vulnerabilidad CVE-2022-21449, que afecta la verificación de firmas ECDSA de Java. La vulnerabilidad permite que un actor malicioso omita la verificación de firmas utilizando una firma con valores cero (r=0 y s=0). El proyecto utiliza tokens JWT reales y falsos con firmas EC para mostrar el problema en Java 17 sin el parche de seguridad.
r=0, s=0).JwtGenerator: Genera tokens JWT reales y falsos.JwtUtils: Valida tokens JWT usando una clave pública EC.SecurityConfig: Configura Spring Security para demostrar la autenticación basada en tokens.ProtectedController: Proporciona endpoints para probar el control de acceso basado en tokens.JwtGeneratorLa clase JwtGenerator es una aplicación de consola independiente que genera e imprime tokens JWT tanto válidos como falsos.
Compilar el proyecto:
mvn clean install
Ejecutar la clase JwtGenerator:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Salida: La aplicación imprimirá:
Ejemplo:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Usar los tokens:
Iniciar la aplicación:
mvn spring-boot:run
Acceder a los endpoints protegidos:
/protected/user o /protected/admin.Endpoints:
/protected/user: Requiere el rol USER o ADMIN./protected/admin: Requiere el rol ADMIN.Este proyecto está licenciado bajo la Licencia MIT.