FixVibe
Covered by FixVibehigh

JWT Seguretat: riscos de fitxes no assegurades i falta de validació de reclamacions

Els testimonis web JSON (JWT) proporcionen un estàndard per transferir reclamacions, però la seguretat es basa en una validació rigorosa. El fet de no verificar les signatures, els temps de caducitat o el públic previst permet als atacants evitar l'autenticació o els testimonis de reproducció.

CWE-347CWE-287CWE-613

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ó aud contingui 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) i aud (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ó exp o estan destinats a un públic diferent, tal com es defineix per la reclamació aud [S1].