Impacte de l'atacant
La validació incorrecta de JWT permet als atacants evitar els mecanismes d'autenticació falsificant reclamacions o reutilitzant fitxes caducades [S1]. Si un servidor accepta fitxes sense una signatura vàlida, un atacant pot modificar la càrrega útil per augmentar els privilegis o suplantar la identitat de qualsevol usuari [S1]. A més, si no s'aplica la reclamació de caducitat (exp), un atacant pot utilitzar un testimoni compromès indefinidament [S1].
Causa arrel
Un testimoni web JSON (JWT) és una estructura basada en JSON que s'utilitza per representar reclamacions signades digitalment o protegides per la integritat [S1]. Els errors de seguretat solen derivar de dues llacunes d'implementació principals:
- Acceptació de JWT no assegurats: si un servei no imposa estrictament la verificació de la signatura, pot processar "JWT no assegurats" on la signatura està absent i l'algorisme s'estableix en "cap" [S1]. En aquest escenari, el servidor confia en les reclamacions de la càrrega útil sense verificar la seva integritat [S1].
- Validació de la reclamació que falta: la reclamació
exp(hora de caducitat) identifica l'hora a partir del qual no s'ha d'acceptar la JWT per processar [S1]. La reclamacióaud(públic) identifica els destinataris previstos del testimoni [S1]. Si no es marquen, el servidor pot acceptar fitxes caducades o destinats a una aplicació diferent [S1].
Correccions concretes
- Aplica signatures criptogràfiques: configureu l'aplicació per rebutjar qualsevol JWT que no utilitzi un algorisme de signatura sòlid i aprovat prèviament (com ara RS256).
- Valida la caducitat: implementeu una comprovació obligatòria per assegurar-vos que la data i l'hora actuals són anteriors a l'hora especificada a la reclamació
exp[S1]. - Verifica el públic: assegureu-vos que la reclamació
audcontingui un valor que identifiqui el servei local; si el servei no s'identifica a la reclamacióaud, el testimoni s'ha de rebutjar [S1]. - Evita la reproducció: utilitzeu la reclamació
jti(ID de JWT) per assignar un identificador únic a cada testimoni, que permeti al servidor fer un seguiment i rebutjar els testimonis reutilitzats [S1].
Estratègia de detecció
Les vulnerabilitats en el maneig de JWT es poden identificar analitzant l'estructura del testimoni i el comportament de resposta del servidor:
- Inspecció de la capçalera: comproveu la capçalera
alg(algorisme) per assegurar-vos que no està configurada en "cap" i utilitza els estàndards criptogràfics esperats [S1]. - Verificació de la reclamació: confirmació de la presència i validesa de les reclamacions
exp(caducitat) iaud(públic) dins de la càrrega útil JSON [S1]. - Prova de validació: prova si el servidor rebutja correctament els testimonis que han caducat segons la reclamació
expo estan destinats a un públic diferent, tal com es defineix per la reclamacióaud[S1].
