Schwache Zufälligkeit

Schwache Zufälligkeit

Zufälliges Aussehen ist nicht dasselbe wie unvorhersehbar.

Was ist Schwache Zufälligkeit?

Schwache Zufälligkeit bedeutet, mit einem schnellen, nicht kryptografischen Generator einen unvorhersehbaren Wert zu prägen. Statistische Einheitlichkeit ist keine Unvorhersehbarkeit: Der Zustand ist klein und die Übergangsfunktion deterministisch. Math.random() in V8 ist xorshift128+, 128 Bit Zustand, rekonstruierbar aus vier beobachteten Ausgaben. Sie sammeln Reset-Token von einem von Ihnen kontrollierten Konto, lösen den Status, sagen den nächsten Token voraus und übernehmen das Sparkonto eines Fremden, ohne dessen Posteingang zu berühren. Der Fix ist eine Zeile, crypto.randomBytes(32).toString('hex') , und das Hashing der schwachen Ausgabe ändert nichts.

Was Sie lernen in Schwache Zufälligkeit

Schwache Zufälligkeit — Trainingsschritte

  1. Das Ziel auskundschaften

    Bob verdient seinen Lebensunterhalt damit, die Konten anderer zu übernehmen und deren Guthaben zu stehlen. Heute hat er Nestward im Visier, eine Spar-App, auf deren einzelnen Konten echte Guthaben liegen können. Er beginnt auf der Passwort-Reset-Seite, dem Eingang, den er nutzen will, und prüft zunächst, wie die Kontowiederherstellung funktioniert.

  2. So funktioniert die Kontowiederherstellung

    Ein Detail auf dieser Seite ist der ganze Grund für Bobs Interesse.

  3. Einen Reset für das eigene Konto anfordern

    Bob beginnt mit Codes, die er rechtmäßig sehen darf. Das Wegwerfkonto bob.reeve@proton.me gehört ihm; daher fordert er dafür einen Reset an und öffnet die Antwort-E-Mail von Nestward. Der Reset-Link in dieser E-Mail enthält den vollständigen Code.

  4. Einen zweiten Code sammeln

    Ein Code reicht nicht aus, um ein Muster zu erkennen. Bob fordert deshalb für dasselbe Konto einen weiteren Reset an und liest die zweite E-Mail.

  5. Noch einen Code sammeln

    Ein dritter Reset verschafft Bob die drei Codes, die sein Solver benötigt. Er liest die letzte E-Mail und ordnet die Codes an.

  6. Den nächsten Code vorhersagen

    Nestward erzeugt diese Codes mit einem schnellen, nicht kryptografischen Generator mit einem kleinen internen Zustand. Bob übergibt die drei Codes aus seinem Postfach an einen Solver, der diesen Zustand rekonstruiert und weiterberechnet. Das Tool gibt den exakten Code aus, den die Anwendung in den nächsten versendeten Reset-Link einfügt – unabhängig davon, für welches Konto der Reset angefordert wird.

  7. Den Reset des Opfers auslösen

    The predicted code is the next one the generator will issue, so Bob has to make it issue that code now. He requests a reset for a real customer, renata.voss@gmail.com. Nestward mints the next code, drops it into a link, and emails it to Renata, an inbox Bob cannot read.

  8. Den vorhergesagten Code einlösen

    Nun verwendet Bob den vorhergesagten Code. Er sendet ihn zusammen mit einem neuen Passwort direkt an den Reset-Endpunkt. Weil er dem gerade an Renata versendeten Code entspricht, akzeptiert der Server ihn und setzt Bobs Passwort für ihr Konto.

  9. Das Konto gehört ihm

    Der Endpunkt hat den Code akzeptiert und das Passwort geändert. Bob ist jetzt bei einem Sparkonto angemeldet, das nicht ihm gehört.

  10. Wissenscheck

    Sie haben gerade gesehen, wie ein Angreifer einen Reset-Code vorhersagte, der ihm nie gezeigt wurde. Prägen Sie sich ein, warum das möglich war.

Abdeckung der Sicherheits-Frameworks

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