• CWE-330: Use of Insufficiently Random Values

Das Produkt verwendet nicht ausreichend zufällige Zahlen oder Werte in einem Sicherheitskontext, der von unvorhersehbaren Zahlen abhängig ist.

CWE-330: Use of Insufficiently Random Values

CWE ID: 330
Name: Use of Insufficiently Random Values

Beschreibung

Das Produkt verwendet nicht ausreichend zufällige Zahlen oder Werte in einem Sicherheitskontext, der von unvorhersehbaren Zahlen abhängig ist.

Erweiterte Beschreibung

Wenn das Produkt vorhersagbare Werte in einem Kontext erzeugt, der Unvorhersehbarkeit erfordert, kann es einem Angreifer möglicherweise möglich sein, den nächsten generierten Wert zu erraten und diese Vermutung zu nutzen, um einen anderen Benutzer zu imitieren oder auf sensible Informationen zuzugreifen.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Betrachten wir einen PRNG, der sich bei Bedarf aus hochwertigen Pseudo-Random-Output-Quellen, wie beispielsweise Hardware-Geräten, neu initialisiert (re-seeds).

Maßnahme (Testing)

Effektivität: Unknown
Beschreibung: Nutzen Sie automatisierte Static-Analysis-Tools, die auf diese Art von Schwachstelle abzielen. Viele moderne Techniken verwenden Data-Flow-Analyse, um die Anzahl der False Positives zu minimieren. Dies ist keine perfekte Lösung, da eine 100%ige Genauigkeit und Abdeckung nicht realisierbar sind.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Verwenden Sie Produkte oder Module, die den Vorgaben von FIPS 140-2 [REF-267] entsprechen, um offensichtliche Entropy-Probleme zu vermeiden. Konsultieren Sie den FIPS 140-2 Anhang C (“Approved Random Number Generators”).

Maßnahme (Testing)

Effektivität: Unknown
Beschreibung: Nutzen Sie Werkzeuge und Techniken, die eine manuelle (menschliche) Analyse erfordern, wie beispielsweise Penetration Testing, Threat Modeling und interaktive Tools, die es dem Tester ermöglichen, eine aktive Session aufzuzeichnen und zu modifizieren. Diese können effektiver sein als rein automatisierte Verfahren. Dies gilt insbesondere für Schwachstellen, die mit Design und Business Rules in Zusammenhang stehen.

Detaillierter Hintergrund

Computer sind deterministische Maschinen und somit nicht in der Lage, echte Zufälligkeit zu erzeugen. Pseudo-Random Number Generators (PRNGs) approximieren Zufälligkeit algorithmisch, beginnend mit einem Seed, aus dem nachfolgende Werte berechnet werden. Es gibt zwei Arten von PRNGs: statistische und kryptographische. Statistische PRNGs bieten nützliche statistische Eigenschaften, jedoch ist ihre Ausgabe hochgradig vorhersehbar und bildet einen leicht reproduzierbaren numerischen Stream, der für Anwendungsfälle ungeeignet ist, in denen die Sicherheit von generierten Werten abhängt. Kryptographische PRNGs adressieren dieses Problem, indem sie eine Ausgabe generieren, die schwerer vorherzusagen ist. Um kryptographisch sicher zu sein, muss es für einen Angreifer unmöglich oder höchst unwahrscheinlich sein, zwischen einem generierten Wert und einem wirklich zufälligen Wert zu unterscheiden.