Zwakke willekeur

Zwakke willekeur

Willekeurig kijken is niet hetzelfde als onvoorspelbaar.

Wat is Zwakke willekeur?

Zwakke willekeur is het creëren van een onvoorstelbare waarde met een snelle, niet-cryptografische generator. Statistische uniformiteit betekent niet onvoorspelbaarheid: de toestand is klein en de transitiefunctie deterministisch. Math.random() in V8 is xorshift128+, 128 statusbits die kunnen worden gereconstrueerd op basis van vier waargenomen uitgangen. Je verzamelt reset-tokens van een account die je beheert, lost de status op, voorspelt het volgende token en neemt de spaarrekening van een vreemde over zonder hun inbox aan te raken. De oplossing is één regel, crypto.randomBytes(32).toString('hex') , en het hashen van zwakke uitvoer verandert niets.

Wat je leert in Zwakke willekeur

Zwakke willekeur — Trainingsstappen

  1. Maak het doel groter

    Bob verdient zijn geld door op de rekeningen van anderen te komen en het geld naar binnen te halen. Tegenwoordig is zijn doelwit Nestward, een spaarapp waar één enkele rekening echte saldi kan bewaren. Hij begint op de pagina voor het opnieuw instellen van het wachtwoord, de voordeur waar hij doorheen wil lopen, om te zien hoe het herstel werkt voordat hij deze aanraakt.

  2. Hoe herstel werkt

    Eén detail op die pagina is de hele reden waarom Bob geïnteresseerd is.

  3. Vraag een reset voor zichzelf aan

    Bob begint met codes die hij mag zien. Hij is eigenaar van het wegwerpaccount bob.reeve@proton.me, dus vraagt ​​hij een reset aan en opent de e-mail die Nestward terugstuurt. De resetlink in die e-mail bevat de volledige code.

  4. Verzamel een tweede code

    Eén code is niet genoeg om een patroon te zien, dus vraagt Bob een nieuwe reset aan voor hetzelfde account en leest de tweede e-mail.

  5. Nog een code

    Een derde reset geeft Bob de drie codes die zijn oplosser nodig heeft. Hij leest de laatste e-mail en zet de codes op een rij.

  6. Voorspel de volgende code

    Nestward combineert deze codes met een snelle, niet-cryptografische generator met een kleine interne status. Bob voert de drie codes die hij uit zijn inbox heeft gelezen in een oplosser in die die toestand reconstrueert en doorstuurt. De tool drukt de exacte code af die de app zal plaatsen in de eerstvolgende resetlink die hij verzendt, voor welk account de reset ook is bedoeld.

  7. Activeer de reset van het slachtoffer

    De voorspelde code is de volgende die de generator zal uitgeven, dus Bob moet ervoor zorgen dat hij die code nu uitgeeft. Hij vraagt ​​om een ​​reset voor een echte klant, renata.voss@gmail.com. Nestward slaat de volgende code op, plaatst deze in een link en e-mailt deze naar Renata, een inbox die Bob niet kan lezen.

  8. Wissel de voorspelde code in

    Nu geeft Bob de code uit die hij voorspelde. Hij stuurt het rechtstreeks naar het reset-eindpunt met een nieuw wachtwoord, en omdat het overeenkomt met de code die Nestward zojuist naar Renata heeft gestuurd, accepteert de server het en stelt zijn wachtwoord in op haar account.

  9. De rekening is van hem

    Het eindpunt heeft de code geaccepteerd en het wachtwoord gewijzigd. Bob is nu ingelogd op een spaarrekening die niet van hem is.

  10. Kennis check

    Je hebt zojuist gezien hoe een aanvaller een resetcode voorspelde die hem nooit werd getoond. Ontdek waarom dat mogelijk was.

Dekking van beveiligingsframeworks

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