Casualità debole

Casualità debole

L’aspetto casuale non è la stessa cosa di imprevedibile.

Cos’è Casualità debole?

La casualità debole consiste nel coniare un valore non indovinabile con un generatore veloce e non crittografico. L’uniformità statistica non è imprevedibilità: lo Stato è piccolo e la funzione di transizione deterministica. Math.random() in V8 è xorshift128+, 128 bit di stato ricostruibili da quattro output osservati. Raccoglierai token di ripristino da un conto che controlli, risolverai per lo stato, predirai il token successivo e prenderai il controllo del conto di risparmio di uno sconosciuto senza toccare la sua casella di posta. La correzione è una riga, crypto.randomBytes(32).toString('hex') , e l'hashing dell'output debole non cambia nulla.

Cosa imparerai in Casualità debole

Casualità debole — Fasi della formazione

  1. Dimensionare il bersaglio

    Bob si guadagna da vivere entrando nei conti di altre persone e prendendo i soldi all'interno. Oggi il suo obiettivo è Nestward, un'app di risparmio in cui un unico conto può contenere saldi reali. Inizia dalla pagina di reimpostazione della password, la porta principale che intende varcare, per vedere come funziona il ripristino prima di toccarla.

  2. Come funziona il recupero

    Un dettaglio in quella pagina è l'intera ragione per cui Bob è interessato.

  3. Richiedere un ripristino per se stesso

    Bob inizia con i codici che gli è consentito vedere. Possiede l'account usa e getta bob.reeve@proton.me, quindi ne richiede il ripristino e apre l'e-mail che Nestward gli restituisce. Il collegamento di ripristino contenuto nell'e-mail contiene il codice completo.

  4. Raccogli un secondo codice

    Un codice non è sufficiente per vedere uno schema, quindi Bob richiede un altro ripristino per lo stesso account e legge la seconda email.

  5. Un altro codice

    Un terzo ripristino fornisce a Bob i tre codici necessari al suo risolutore. Legge l'ultima email e allinea i codici.

  6. Prevedere il codice successivo

    Nestward conia questi codici con un generatore veloce e non crittografico che ha un piccolo stato interno. Bob inserisce i tre codici che ha letto dalla sua casella di posta in un risolutore che ricostruisce lo stato e lo esegue. Lo strumento stampa il codice esatto che l'app inserirà nel successivo collegamento di ripristino inviato, per qualunque account sia previsto per il ripristino.

  7. Attiva il reset della vittima

    Il codice previsto è il prossimo che il generatore emetterà, quindi Bob deve fargli emettere quel codice adesso. Richiede un ripristino per un cliente reale, renata.voss@gmail.com. Nestward conia il codice successivo, lo inserisce in un collegamento e lo invia via email a Renata, una casella di posta che Bob non riesce a leggere.

  8. Riscatta il codice previsto

    Ora Bob spende il codice che aveva previsto. Lo invia direttamente all'endpoint di ripristino con una nuova password e, poiché corrisponde al codice che Nestward ha appena inviato a Renata, il server lo accetta e imposta la sua password sul suo account.

  9. Il conto è suo

    L'endpoint ha accettato il codice e ha modificato la password. Bob ha ora effettuato l'accesso a un conto di risparmio che non è suo.

  10. Verifica della conoscenza

    Hai appena visto un utente malintenzionato prevedere un codice di ripristino che non gli è mai stato mostrato. Scopri perché ciò è stato possibile.

Copertura dei framework di sicurezza

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