The lack of entropy available for, or used by, a Pseudo-Random Number Generator (PRNG) can be a stability and security threat.
View on MITREIf a pseudo-random number generator is using a limited entropy source which runs out (if the generator fails closed), the program may pause or crash.
If a PRNG is using a limited entropy source which runs out, and the generator fails open, the generator could produce predictable random numbers. Potentially a weak source of random numbers could weaken the encryption method used for authentication of users.
Consider a PRNG that re-seeds itself as needed from high-quality pseudo-random output, such as hardware devices.
When deciding which PRNG to use, look at its sources of entropy. Depending on what your security needs are, you may need to use a random number generator that always uses strong random data -- i.e., a random number generator that attempts to be strong but will fail in a weak way or will always provide some middle ground of protection through techniques like re-seeding. Generally, something that always provides a predictable amount of strength is preferable.
No detection method information available for this CWE.
Chain: JavaScript-based cryptocurrency library can fall back to the insecure Math.random() function instead of reporting a failure (CWE-392), thus reducing the entropy (CWE-332) and leading to generation of non-unique cryptographic keys for Bitcoin wallets (CWE-1391)
View Detailssecurity product has insufficient entropy in the DRBG, allowing collisions and private key discovery
View DetailsCWE-332: Insufficient Entropy in PRNG is a Common Weakness Enumeration (CWE) entry maintained by MITRE. The lack of entropy available for, or used by, a Pseudo-Random Number Generator (PRNG) can be a stability and security threat.
If exploited, CWE-332 (Insufficient Entropy in PRNG) it can compromise Availability, Access Control and Other, leading to outcomes such as DoS: Crash, Exit, or Restart, Bypass Protection Mechanism and Other.
Recommended mitigations for CWE-332 include: Consider a PRNG that re-seeds itself as needed from high-quality pseudo-random output, such as hardware devices. When deciding which PRNG to use, look at its sources of entropy. Depending on what your security needs are, you may need to use a random number generator that always uses strong random data -- i.e., a random number generator that attempts to be strong but will fail in a weak way or will always provide some middle ground of protection through techniques like re-seeding. Generally, something that always provides a predictable amount of strength is preferable.
CWE-332 commonly affects Not Language-Specific. Note that weaknesses are often language-agnostic patterns, so secure coding practices apply broadly.
MITRE documents real CVEs mapped to CWE-332, including [REF-1374] and CVE-2019-1715. You can look up the full details of each CVE, including CVSS scores and remediation guidance, on our CVE Lookup tool.
A CWE (Common Weakness Enumeration) like CWE-332 describes a category of software weakness — the underlying flaw type. A CVE (Common Vulnerabilities and Exposures) identifies a specific, real-world vulnerability in a particular product. In short, a CWE is the kind of mistake, and a CVE is an instance of that mistake being found in software.