
Demonstração do ataque de confusão de algoritmo em várias bibliotecas JWT
Demonstração do ataque de confusão de algoritmo em bibliotecas Json Web Token (JWT). JWTs são frequentemente usados em cookies para certificar uma sessão de usuário e, portanto, este ataque é crítico. O módulo node [email protected] foi usado para demonstrar a vulnerabilidade.
Este projeto também foi uma boa atividade de vibe coding, já que o front-end foi quase inteiramente feito com LLMs, exceto pelas chamadas de API.
O formato de um JWT é o seguinte:
b64(header).b64(payload).b64(signature)
With in our case:
header = (algorithm, type)
payload = (username, role)
Na época, as várias bibliotecas JWT podiam assinar com um algoritmo, mas não impunham um algoritmo e, em vez disso, confiavam no conteúdo do cabeçalho do JWT, permitindo assim que o usuário decidisse sua própria criptografia. Isso permite muitas explorações, mas a usada neste caso é a seguinte:
Autentique-se como qualquer usuário na página de login. Você precisará se registrar primeiro.
Uma vez na página inicial, haverá um botão que só pode ser clicado se você tiver uma sessão de administrador válida. Você precisará então executar o exploit para forjar este JWT.
Finalmente, substitua o JWT original pelo JWT forjado no armazenamento local e, após uma atualização, o botão deve estar clicável e a flag é sua!