Cyber Security Academy · Leçon

Attaques contre les jetons et renforcement

Défendre les flux d’authentification contre les abus.

Leçon 4 sur 413 étapes

Attaques contre les jetons et renforcement est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.

Les jetons comme justificatifs d'authentification

Dans les systèmes d'authentification modernes, les jetons sont des justificatifs d'authentification. Toute personne détenant un jeton porteur valide est considérée comme la partie authentifiée jusqu'à son expiration ou sa révocation.

  • Le vol d'un jeton équivaut donc au vol d'un justificatif d'authentification.
  • Le renforcement de la sécurité vise à limiter la durée de vie des jetons, à les lier à leur détenteur et à permettre une révocation rapide.

Cette leçon couvre les attaques visant les jetons OAuth/OIDC/SAML ainsi que les contrôles de sécurité qui les contrent.

Confusion d'algorithme JWT

Une attaque JWT classique exploite l'en-tête alg.

  • alg: none, s'il est accepté, permet à un attaquant de forger des jetons non signés.
  • Avec la confusion RS256/HS256, l'attaquant resigne un jeton en utilisant la clé RSA publique comme secret HMAC.

Défense : épinglez l'algorithme attendu côté serveur et ne laissez jamais le jeton déterminer le chemin de vérification utilisé.

Vulnerable: verify(token, key)  // alg taken from header
Hardened:   verify(token, key, { algorithms: ["RS256"] })
// reject alg:none, reject HS* when RS* expected

Vol de jetons par XSS et dans les journaux

Le compromis de jeton le plus courant est le simple vol d'un jeton valide.

  • Une attaque XSS lit les jetons dans localStorage ou en mémoire.
  • Les jetons présents dans les adresses URL fuitent par l'historique du navigateur, les en-têtes de provenance et les journaux du serveur.
  • La journalisation détaillée des en-têtes Authorization.

Préférez les cookies httpOnly, Secure et SameSite pour les sessions de navigateur, et purgez les jetons des journaux et des adresses URL.

Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// keeps JS (and thus XSS) from reading the token

Attaques par rejeu

Une attaque par rejeu réutilise un jeton valide capturé pour agir à la place de la victime.

  • Elle est limitée par des expirations courtes, un nonce à usage unique (OIDC) et le suivi des identifiants d'assertion (SAML).
  • TLS empêche la capture passive sur le réseau.
  • Les jetons liés à l'expéditeur empêchent la réutilisation même s'ils sont volés.
Replay defenses:
  short exp + nonce/jti uniqueness
  TLS everywhere
  sender-constrained tokens (mTLS / DPoP)

Jetons liés à l'expéditeur

Les jetons porteurs peuvent être utilisés par toute personne qui les détient. Les jetons liés à l'expéditeur associent un jeton à la clé d'un client donné.

  • Les jetons liés à mTLS (RFC 8705) associent le jeton au certificat TLS du client.
  • DPoP (RFC 9449) associe le jeton à une clé de preuve de possession que le client utilise pour signer chaque requête.

Un jeton volé devient alors inutilisable sans la clé privée correspondante.

DPoP: each request carries a signed proof JWT
  DPoP: <proof-jwt signed with client private key>
  Authorization: DPoP <access_token>

Courtes durées de vie et rotation des jetons d'actualisation

Limitez la période pendant laquelle un jeton volé peut être utile.

  • Conservez des jetons d'accès à courte durée de vie (quelques minutes).
  • Utilisez la rotation des jetons d'actualisation : chaque actualisation émet un nouveau jeton d'actualisation et invalide l'ancien.
  • Détectez la réutilisation d'un jeton d'actualisation déjà renouvelé comme un signe de vol et révoquez toute la chaîne.
On /token refresh:
  issue new RT, invalidate old RT
  if old RT presented again -> breach -> revoke family

Révocation et introspection des jetons

Les JWT autonomes restent valides jusqu'à leur expiration, ce qui complique leur révocation. Prévoyez des mécanismes permettant de couper rapidement l'accès.

  • Le point de terminaison de révocation (RFC 7009) invalide les jetons d'actualisation et d'accès.
  • L'introspection (RFC 7662) permet à un serveur de ressources de vérifier en temps réel l'état d'un jeton.
  • Maintenez une liste de blocage fondée sur jti pour les révocations critiques.
POST /introspect  token=...
  -> { "active": true, "sub": "...", "scope": "read" }
POST /revoke      token=...

Contrôle de l'audience et de la portée

Un jeton valide n'est pas automatiquement autorisé à accéder à votre API. Contrôlez l'intention.

  • Vérifiez aud afin qu'un jeton émis pour un autre service ne puisse pas être rejoué contre le vôtre.
  • Appliquez la portée à chaque point de terminaison ; ne supposez pas qu'un jeton valide donne automatiquement un accès complet.
  • Validez iss afin de bloquer les jetons provenant d'émetteurs non fiables.

Cela empêche la réutilisation de jetons entre services et les abus du mandataire confus.

Attaques de confusion et attaques inter-fournisseurs

Lorsqu'un client prend en charge plusieurs fournisseurs d'identité, les attaques de confusion peuvent l'inciter à envoyer un code ou un jeton émis par un IdP à un autre point de terminaison choisi par l'attaquant.

  • Le client ne sait plus de quel serveur d'autorisation provient la réponse.
  • Défense : liez les réponses à l'émetteur au moyen du paramètre iss (RFC 9207) et validez state pour chaque fournisseur.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started with

Stockage et transport sécurisés

L'emplacement et le mode de stockage des jetons déterminent leur exposition.

  • Sessions de navigateur : cookies httpOnly, Secure et SameSite ; évitez localStorage.
  • Appareils mobiles : trousseau de clés ou magasin sécurisé de l'OS, jamais de fichiers en clair.
  • Serveurs : gestionnaire de secrets, chiffrement au repos et moindre privilège limité à la portée nécessaire.
  • Utilisez toujours TLS pendant le transport ; n'intégrez jamais de jetons dans les chaînes de requête.

Liste de contrôle pour renforcer les jetons

Regroupez ces contrôles dans une base opérationnelle.

  • Épinglez les algorithmes ; rejetez alg: none et les attaques par confusion.
  • Validez iss, aud, exp, signature, nonce/state.
  • Utilisez un TTL court pour les jetons d'accès, ainsi qu'une rotation des jetons d'actualisation avec détection des réutilisations.
  • Préférez les jetons liés à l'expéditeur (DPoP/mTLS) pour les API critiques.
  • Prenez en charge la révocation et l'introspection.
  • Stockez les jetons de manière sécurisée ; excluez-les des adresses URL et des journaux.
Hardening baseline:
  [ ] alg pinned, none rejected
  [ ] iss/aud/exp/sig/nonce validated
  [ ] short TTL + RT rotation + reuse detection
  [ ] DPoP/mTLS for sensitive scopes
  [ ] revoke + introspect available

Vérification rapide : neutraliser les jetons volés

Choisissez le contrôle qui limite le mieux les dommages causés directement par le vol de jetons.

Récapitulatif : attaques visant les jetons et renforcement

Points essentiels :

  • Les jetons sont des justificatifs d'authentification ; leur vol équivaut à une prise de contrôle du compte.
  • Défendez les JWT en épinglant les algorithmes et en validant iss, aud, exp, signature, nonce.
  • Limitez l'exposition grâce à des durées de vie courtes et à la rotation des jetons d'actualisation avec détection des réutilisations.
  • Les jetons liés à l'expéditeur (DPoP/mTLS) neutralisent les jetons porteurs volés.
  • Prévoyez la révocation et l'introspection, et excluez les jetons des adresses URL, des journaux et de localStorage.
Gratuit pour commencer

Apprends Cyber Security Academy avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
76
Leçons
303

Questions Fréquemment Posées

La leçon « Attaques contre les jetons et renforcement » est-elle gratuite ?

Oui — le texte complet de « Attaques contre les jetons et renforcement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Attaques contre les jetons et renforcement » ?

Défendre les flux d’authentification contre les abus. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?

Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Attaques contre les jetons et renforcement » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?

Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Flux OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML et fédération
  4. Attaques contre les jetons et renforcement
← Retour à Cyber Security Academy