Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
CWE-338
The product uses a Pseudo-Random Number Generator (PRNG) in a security context, but the PRNG's algorithm is not cryptographically strong.
When a non-cryptographic PRNG is used in a cryptographic context, it can expose the cryptography to certain types of attacks. Often a pseudo-random number generator (PRNG) is not designed for cryptography. Sometimes a mediocre source of randomness is sufficient or preferable for algorithms that use random numbers. Weak generators generally take less processing power and/or do not use the precious, finite, entropy sources on a system. While such PRNGs might have very useful features, these same features could be used to break the cryptography.
We track 99 vulnerabilities of this type. 100% are rated high or critical, and the average CVSS score is 8.6.
How this weakness is prevented
- Implementation: Use functions or hardware which use a hardware-based random number generation for all crypto. This is the recommended solution. Use CyptGenRandom on Windows, or hw_rand() on Linux.
Latest Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) vulnerabilities
- 8.1 High severity
API Connect: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
IBM API Connect 10.0.8.0 through 10.0.8.12 could allow a remote attacker to gain full administrative control due to the use of a cryptographically weak pseudo-random number generator.
- 7.8 High severity
TightVNC: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Incorrect permission assignment in GlavSoft TightVNC Server for Windows before 2.8.88 allows a local authenticated user to read or overwrite the inter-process communication handles used between the TightVNC service and its desktop server process. The named sha
- 9.1 Critical severity
GetSimpleCMS-CE: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
GetSimple CMS is a content management system (CMS), and GetSimple CMS CE is the community edition of that CMS. In version 3.3.22, the password reset endpoint can be accessed without authentication. When a reset request is submitted for an existing user, the ap
- 9.9 Critical severity
BoKS Manager boks-server: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
In deployments using BoKS keytab management, affected versions of boks_keytabmd generate Active Directory service-account passwords from a predictable pseudo-random sequence seeded with the current Unix timestamp. An attacker who knows the service principal an
- 9.1 Critical severity
postiz-app: Use of Insufficiently Random Values
Postiz generates security-sensitive credentials using `Math.random()` instead of a cryptographically secure source. The same helper is used for OAuth access tokens, authorization codes, client secrets, organization API keys, and PKCE verifiers, meaning these c
- 8.1 High severity
nivocart: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
NivoCart through 2.4.0 contains a predictable password reset token vulnerability in the forgotten.php endpoint that generates recovery codes using substr(md5(mt_rand()), 0, 10). Attackers who know an administrator's email address can request a password reset a
- 8.1 High severity
Cotonti: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Cotonti through 1.0.0 derives password recovery validation tokens from md5(microtime()) in users.passrecover.php, creating a predictable token space of approximately one million values per second. Unauthenticated attackers can read the server Date header, prec
- 8.1 High severity
SafeLine: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
SafeLine through 9.4.1 derives the management console session-signing secret from a time-seeded math/rand generator, allowing attackers to reconstruct the key offline. Unauthenticated remote attackers who can bound the install timestamp can regenerate the secr
- 7.5 High severity
openssl_encrypt: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
openssl_encrypt versions before 1.4.0 use Python's non-cryptographic random module for steganographic pixel selection in the generate_pseudorandom_sequence function. Attackers who know the password can recover the Mersenne Twister state from approximately 624
- 9.1 Critical severity
sm-crypto: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
sm-crypto provides JavaScript implementations of the Chinese cryptographic algorithms SM2, SM3, and SM4. Prior to 0.5.0, the default no-argument sm2.generateKeyPairHex() path in Node.js uses the module-wide SecureRandom instance in src/sm2/utils.js, supplied b
- 7.5 High severity
Red Hat OpenShift AI 2.25: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
A flaw was found in the Data Science Pipelines Operator. This vulnerability allows an unauthenticated attacker to derive sensitive credentials, such as MariaDB root/user passwords and MinIO access/secret keys, if they can access the MinIO Route or MariaDB Serv
- 9.0 Critical severity
crypto-js: Insufficient Entropy
crypto-js is a JavaScript library of crypto standards. Versions of crypto-js prior to 4.0.0 generate randomness in CryptoJS.lib.WordArray.random() using a custom variation of the Multiply-With-Carry pseudorandom number generator, seeded from Math.random(), ins
- 8.3 High severity
Spring Tools for Eclipse: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
When enabling Spring Boot DevTools support for a remote application target (for example a Docker container or Cloud Foundry app) from the Spring Tools Boot Dashboard, Spring Tools generates a shared secret that authenticates DevTools remote-restart uploads to
- 9.1 Critical severity
IP Login extension for Joomla: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Joomla Extension - regularlabs.com - Insecure login URL keys in IP login extension - Persistent URL login keys were also generated using a non-cryptographic random generator with insufficient entropy.
- 8.7 High severity
Switch Engine (EXOS): Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
ExtremeXOS (EXOS) uses a challenge-response mechanism to authorize access to the privileged debug-mode function. The challenge value is generated using an insufficiently random source, which under certain conditions may allow an attacker to predict the expecte
- 9.8 Critical severity
Crypt::Password: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Crypt::Password versions through 0.28 for Perl generate insecure random values for salts. These versions use the built-in rand function, which is predictable and unsuitable for cryptography.
- 8.1 High severity
urwid: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call con
- 9.3 Critical severity
wg-easy: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
WireGuard Easy through 15.3.0, fixed in commit 66b292b, contains a cryptographically weak one-time link token generation vulnerability that allows unauthenticated network attackers to recover WireGuard peer credentials by brute-forcing a keyspace of at most 10
- 9.8 Critical severity
hfs: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Rejetto HFS 3.0.0 through 3.2.0 derives its session-cookie signing key from the non-cryptographic Math.random() generator and discloses outputs of the same generator to unauthenticated clients during login. A remote attacker can collect a small number of login
- 8.8 High severity
DoLogin Security: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
The DoLogin Security plugin for WordPress is vulnerable to Authentication Bypass via Insufficient Randomness in all versions up to, and including, 4.3. The vulnerability exists because `dologin\s::rrand()` seeds the Mersenne Twister with `mt_srand((double) mic
- 7.4 High severity
UltraVNC: Inadequate Encryption Strength
UltraVNC through 1.8.2.2 uses inadequate cryptography in the MS-Logon II authentication scheme (rfbUltraVNC_MsLogonIIAuth). In rfb/dh.cpp the Diffie-Hellman key exchange is performed with parameters that fit in an unsigned 64-bit integer (DH_MAX_BITS controls
- 9.1 Critical severity
Langflow OSS: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
IBM Langflow OSS 1.0.0 through 1.10.0 Langflow could allow disclosure of all stored credentials due to the use of a weak and reversible key derivation mechanism for encryption at rest.
- 9.1 Critical severity
Mojolicious::Plugin::Web::Auth::OAuth2: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Mojolicious::Plugin::Web::Auth::OAuth2 versions through 0.17 for Perl have an insecure default state parameter. When no state generator is specified in the constructor, the module defaults to using a SHA-1 hash of predictable and low-entropy sources, including
- 9.8 Critical severity
Hub: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
In JetBrains Hub before 2026.1.13757, 2025.3.148033, 2025.2.148048, 2025.1.148120, 2024.3.148430, 2024.2.148429 account takeover via predictable restore codes was possible
- 9.1 Critical severity
Dancer2::Plugin::Auth::OAuth: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Dancer2::Plugin::Auth::OAuth versions before 0.22 for Perl default to a predictable nonce. The default nonce was generated using an MD5 hash of the epoch time, which is predictable.
- 7.5 High severity
Crypt::PBKDF2: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Crypt::PBKDF2 versions before 0.261630 for Perl generate insecure random values for salts. These versions use the built-in rand function, which is predictable and unsuitable for cryptography.
- 7.5 High severity
haxcms-php: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
HAX CMS helps manage microsite universe with PHP or NodeJs backends. Versions prior to 26.0.1 use `uniqid` for generating salts, which is unsuitable. Version 26.0.1 fixes the issue.
- 8.5 High severity
linqi: Use of Hard-coded Cryptographic Key
The linqi application contains hardcoded cryptographic keys. Additionally, the application uses a weak algorithm with a limited ASCII charset to dynamically generate Initialization Vectors (IVs) for AES/CBC encryption, making known-plaintext attacks feasible.
- 7.5 High severity
windows-utilities-release: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Weak Randomness / Insecure Cryptographic Primitive (CWE-338) in Get-RandomPassword in BOSH-Ecosystem / windows-utilities-release allows a network attacker to estimate VM boot time and reconstruct a small candidate list to recover the Administrator password. Th
- 9.1 Critical severity
Crypt::SaltedHash: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Crypt::SaltedHash versions through 0.09 for Perl generate insecure random values for salts. These versions use the built-in rand function, which is predictable and unsuitable for cryptography.
- 9.3 Critical severity
magento-lts: Use of Insufficiently Random Values
Magento Long Term Support (LTS) is an unofficial, community-driven project provides an alternative to the Magento Community Edition e-commerce platform with a high level of backward compatibility. Prior to 20.18.0, the XML-RPC / SOAP API session ID is generate
- 7.5 High severity
Crypt::PasswdMD5: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Crypt::PasswdMD5 versions through 1.42 for Perl generates insecure random values for salts. The built-in rand function is predictable, and unsuitable for cryptography.
- 8.7 High severity
relate: Use of Insufficiently Random Values
RELATE is a web-based courseware package. Prior to commit 2f68e16, RELATE is vulnerable to predictable token generation in auth.py's make_sign_in_key() function and exam.py's gen_ticket_code() function. This issue has been patched via commit 2f68e16.
- 7.5 High severity
Spring Boot: Use of Insufficiently Random Values
Values produced by ${random.value} are not suitable for use as secrets. ${random.uuid} is not affected. ${random.int} and ${random.long} should never be used for secrets as they are numeric values with a predictable range. Affected: Spring Boot 4.0.0–4.0.5 (fi
- 9.1 Critical severity
SmarterMail: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
SmarterTools SmarterMail builds prior to 9610 contain a cryptographic weakness in the file and email sharing endpoints that use DES-CBC encryption with keys and initialization vectors derived from System.Random seeded with insufficient entropy, reducing the se
- 7.5 High severity
CryptX: Incorrect Usage of Seeds in Pseudo-Random Number Generator (PRNG)
CryptX versions before 0.088 for Perl do not reseed the Crypt::PK PRNG state after forking. The Crypt::PK::RSA, Crypt::PK::DSA, Crypt::PK::DH, Crypt::PK::ECC, Crypt::PK::Ed25519 and Crypt::PK::X25519 modules seed a per-object PRNG state in their constructors a
- 7.5 High severity
Apache::API::Password: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Apache::API::Password versions through 0.5.2 for Perl can generate insecure random values for salts. The _make_salt and _make_salt_bcrypt methods will attept to load Crypt::URandom and then Bytes::Random::Secure to generate random bytes for the salt. If those
- 9.1 Critical severity
Solstice::Session: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Solstice::Session versions through 1440 for Perl generates session ids insecurely. The _generateSessionID method returns an MD5 digest seeded by the epoch time, a random hash reference, a call to the built-in rand() function and the process id. The same method
- 9.8 Critical severity
cloudreve: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
Cloudreve is a self-hosted file management and sharing system. Prior to version 4.13.0, the application uses the weak pseudo-random number generator math/rand seeded with time.Now().UnixNano() to generate critical security secrets, including the secret_key, an
- 7.5 High severity
PAGI::Middleware::Session::Store::Cookie: Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)
PAGI::Middleware::Session::Store::Cookie versions through 0.001003 for Perl generates random bytes insecurely. PAGI::Middleware::Session::Store::Cookie attempts to read bytes from the /dev/urandom device directly. If that fails (for example, on systems without