Faible caractère aléatoire

Faible caractère aléatoire

L’aspect aléatoire n’est pas la même chose qu’imprévisible.

Qu'est-ce que Faible caractère aléatoire?

Un faible caractère aléatoire consiste à créer une valeur indevinable avec un générateur rapide et non cryptographique. L’uniformité statistique n’est pas imprévisible : l’État est petit et la fonction de transition est déterministe. Math.random() dans V8 est xorshift128+, 128 bits d'état reconstructibles à partir de quatre sorties observées. Vous collecterez des jetons de réinitialisation à partir d'un compte que vous contrôlez, déterminerez l'état, prédirez le prochain jeton et reprendrez le compte d'épargne d'un étranger sans toucher à sa boîte de réception. Le correctif est une ligne, crypto.randomBytes(32).toString('hex') , et le hachage d'une sortie faible ne change rien.

Ce que vous apprendrez dans Faible caractère aléatoire

Faible caractère aléatoire — Étapes de la formation

  1. Évaluez la cible

    Bob gagne sa vie en accédant aux comptes des autres et en y récupérant l'argent. Aujourd'hui, sa cible est Nestward, une application d'épargne où un seul compte peut contenir des soldes réels. Il commence par la page de réinitialisation du mot de passe, la porte d'entrée qu'il prévoit de franchir, pour voir comment fonctionne la récupération avant de la toucher.

  2. Comment fonctionne la récupération

    Un détail sur cette page est la seule raison pour laquelle Bob est intéressé.

  3. Demander une réinitialisation pour lui-même

    Bob commence avec les codes qu'il est autorisé à voir. Il possède le compte jetable bob.reeve@proton.me. Il demande donc une réinitialisation et ouvre l'e-mail renvoyé par Nestward. Le lien de réinitialisation contenu dans cet e-mail contient le code dans son intégralité.

  4. Récupérez un deuxième code

    Un code ne suffit pas pour voir un modèle, alors Bob demande une autre réinitialisation pour le même compte et lit le deuxième e-mail.

  5. Encore un code

    Une troisième réinitialisation donne à Bob les trois codes dont son solveur a besoin. Il lit le dernier email et aligne les codes.

  6. Prédire le prochain code

    Nestward crée ces codes avec un générateur rapide et non cryptographique doté d'un petit état interne. Bob transmet les trois codes qu'il a lus dans sa boîte de réception dans un solveur qui reconstruit cet état et le fait avancer. L'outil imprime le code exact que l'application mettra dans le tout prochain lien de réinitialisation qu'elle enverra, quel que soit le compte auquel la réinitialisation est destinée.

  7. Déclencher la réinitialisation de la victime

    Le code prédit est le prochain que le générateur émettra, donc Bob doit lui faire émettre ce code maintenant. Il demande une réinitialisation pour un vrai client, renata.voss@gmail.com. Nestward crée le code suivant, le dépose dans un lien et l'envoie par e-mail à Renata, une boîte de réception que Bob ne peut pas lire.

  8. Utiliser le code prédit

    Maintenant, Bob utilise le code qu'il avait prédit. Il l'envoie directement au point final de réinitialisation avec un nouveau mot de passe, et comme il correspond au code que Nestward vient d'envoyer à Renata, le serveur l'accepte et définit son mot de passe sur son compte.

  9. Le compte est à lui

    Le point de terminaison a accepté le code et a modifié le mot de passe. Bob est désormais connecté à un compte d'épargne qui n'est pas le sien.

  10. Contrôle des connaissances

    Vous venez de voir un attaquant prédire un code de réinitialisation qui ne lui a jamais été montré. Expliquez pourquoi cela a été possible.

Couverture des référentiels de sécurité

OWASP Top 10

  • A04:2025 Cryptographic Failures
  • A02:2021 Cryptographic Failures

CWE

  • CWE-330 Use of Insufficiently Random Values
  • CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security