CWE-330

Use of Insufficiently Random Values
AI Translation Available

The product uses insufficiently random numbers or values in a security context that depends on unpredictable numbers.

Status
stable
Abstraction
class
Likelihood
high

Common Consequences

confidentiality other access control
Impacts
other bypass protection mechanism gain privileges or assume identity

Detection Methods

black box automated static analysis - binary or bytecode manual static analysis - binary or bytecode dynamic analysis with manual results interpretation manual static analysis - source code automated static analysis - source code architecture or design review

Potential Mitigations

Phases:
architecture and design implementation requirements
Descriptions:
• Consider a PRNG that re-seeds itself as needed from high quality pseudo-random output sources, such as hardware devices.
• Use a well-vetted algorithm that is currently considered to be strong by experts in the field, and select well-tested implementations with adequate length seeds. In general, if a pseudo-random number generator is not advertised as being cryptographically secure, then it is probably a statistical PRNG and should not be used in security-sensitive contexts. Pseudo-random number generators can produce predictable numbers if the generator is known and the seed can be guessed. A 256-bit seed is a good starting point for producing a "random enough" number.
• Use products or modules that conform to FIPS 140-2 [REF-267] to avoid obvious entropy problems. Consult FIPS 140-2 Annex C ("Approved Random Number Generators").

Functional Areas

cryptography authentication session management