Se um serviço verifica tokens RS256 com verify(token, publicKeyPem) e a biblioteca também aceita HS256 com qualquer chave que receber, o atacante pega a chave pública (publicada no JWKS), calcula um HMAC sobre um cabeçalho e um payload forjados usando esses bytes como segredo e define "alg": "HS256"; o servidor então confere um HMAC válido. Tim McLean descreveu o ataque junto com o none em 2015, e variantes continuam aparecendo em novas bibliotecas e frameworks, inclusive por meio de JWKs embutidas no cabeçalho jwk do token.
A correção (RFC 8725 §3.1) é vincular cada chave a exatamente um algoritmo do lado do verificador: listas de algoritmos permitidos, objetos de chave tipados que não podem servir também como segredo HMAC, alg de cada JWK conferido com o do token e nunca escolher chaves a partir de jwk, jku ou x5u fornecidos pelo token sem uma decisão de confiança. Os nomes de algoritmo totalmente especificados da RFC 9864 eliminam a ambiguidade relacionada dos identificadores polimórficos, como EdDSA.