web-token/jwt-framework: Unprotected header override de 'alg' em JWSVerifier e JWEDecrypter
JWSVerifier::getAlgorithm() mescla cabeçalhos protegidos e não protegidos com spread operator, permitindo que o cabeçalho não protegido sobrescreva o parâmetro 'alg' protegido.
O que mudou
JWSVerifier::getAlgorithm() mescla cabeçalhos protegidos e não protegidos com spread operator, permitindo que o cabeçalho não protegido sobrescreva o parâmetro 'alg' protegido. O mesmo problema ocorre em JWEDecrypter.php com array_merge().
Quem isso afeta
Todas as aplicações que usam web-token/jwt-framework e dependem de JWSVerifier ou JWEDecrypter para verificação de assinatura ou descriptografia, especialmente aquelas com conjuntos de chaves mistos ou sem HeaderCheckerManager.
O que fazer hoje
Aplique a correção fornecida: modifique JWSVerifier::getAlgorithm() para ler 'alg' exclusivamente do cabeçalho protegido e corrija JWEDecrypter para usar valores do cabeçalho protegido para 'alg' e 'enc'.