Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCompromise database containing PBKDF2 hashes
-
DeliveryExtract stored salt values
-
ExploitReconstruct Perl rand() PRNG state
-
ExecutionPrecompute PBKDF2 candidates for common passwords
-
PersistMatch precomputed hashes against stolen records
-
ImpactRecover plaintext credentials at scale
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
|
| Exploitation Conditions | Exploitation requires that (1) the target application stores password hashes produced by Crypt::PBKDF2 before 0.261630 using the module's default/internal salt generation rather than caller-supplied salts, and (2) the attacker has already obtained those stored hashes through a separate compromise (database leak, backup theft, SQL injection). The weakness is in salt generation only, so applications that pass their own cryptographically secure salts into Crypt::PBKDF2 are not affected; conversely, the predictability of Perl's rand() depends on the seed and call sequence in the hosting process, so cross-process salt prediction may require additional knowledge of the application's rand() usage pattern. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/C:H/I:N/A:N, 7.5 High) reflects confidentiality impact only and appears overstated for this issue: predictable salts do not directly expose plaintext data over the network - they degrade the offline brute-force resistance of stored hashes that an attacker has already obtained through some other means. Realistically, this is a defense-in-depth weakness whose impact materializes only once a database of Crypt::PBKDF2 hashes is leaked. No public exploit identified at time of analysis and no EPSS or KEV signal is provided. The 'AV:N' rating is questionable since exploitation requires possession of the hash material rather than a network interaction with the library itself - security teams should treat this as a cryptographic hygiene fix rather than an emergency network-exposed RCE. |
| Exploit ScenarioDerived | An attacker who obtains a dump of a password database hashed with a vulnerable Crypt::PBKDF2 version (for example via SQL injection or a backup leak) recovers or narrows the per-row salts by reconstructing the state of Perl's rand() PRNG from the sequence of stored salts. With predictable salts, the attacker can precompute PBKDF2 hashes for common passwords once and reuse the work across many accounts, or build a targeted rainbow table - dramatically reducing the cost of offline cracking compared to a properly random salt. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 12, 2026
Predictable salt generation in the Perl Crypt::PBKDF2 module before version 0.261630 weakens the cryptographic strength of derived password hashes. The module uses Perl's built-in rand() function - a non-cryptographic PRNG - to generate salt values, making salts guessable and enabling precomputation attacks against stored password hashes. No public exploit identified at time of analysis, but a vendor patch is available and the issue was responsibly disclosed by CPANSec.
RemediationAI
Vendor-released patch: 0.261630 - upgrade the Crypt::PBKDF2 CPAN distribution to version 0.261630 or later (see https://metacpan.org/release/ARODLAND/Crypt-PBKDF2-0.261630/changes and the oss-security advisory at https://seclists.org/oss-sec/2026/q2/899). Because previously generated password hashes were salted with predictable values, simply upgrading does not retroactively strengthen existing stored credentials; operators should plan to force password rotation or rehash on next successful login so that new salts come from the patched CSPRNG path. As a temporary workaround for code you control, pass an explicit salt generated from Crypt::URandom or Crypt::PRNG (Bytes::Random::Secure) into the PBKDF2 generate() call instead of relying on the module's internal salt generator - the trade-off is that every caller must be audited and updated, which is more invasive than a single package upgrade.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Crypt::PBKDF2 is a Perl implementation of the PBKDF2 (Password-Based Key Derivation Function 2) key-stretching algorithm widely used to hash passwords for storage. PBKDF2's security depends critically on a unique, unpredictable per-password salt that prevents attackers from precomputing rainbow tables or reusing offline work across multiple targets. CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator) is the root cause: the affected code path (visible in lib/Crypt/PBKDF2.pm lines 86-93 on metacpan) calls Perl's built-in rand(), which is a linear congruential generator seeded from limited entropy and is not suitable for cryptographic use. The CPE cpe:2.3:a:arodland:crypt::pbkdf2 confirms the affected package is the ARODLAND-maintained distribution on CPAN.
Know when Crypt gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Exploitation requires prior possession of leaked hashes and PRNG-state reconstruction (AV:L, AC:H); only partial credential recovery affects confidentiality (C:L), with no integrity or availability impact.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
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.
Executive ViewAI
The Perl Crypt::PBKDF2 module before version 0.261630 uses a non-cryptographic random number generator to generate password salts, weakening stored password hashes against precomputation attacks; no public exploit identified at time of analysis. Organizations using this module for credential storage face elevated risk of password compromise if attackers obtain hash databases. Vendor patch is available and should be deployed immediately.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Predictable salt generation in Crypt::Password through version 0.28 for Perl weakens the security of stored password has
Perl Crypt::NaCl::Sodium module through 2.002 has potential integer overflows in cryptographic operations that could wea
Crypt::Sodium::XS for Perl bundles a vulnerable version of libsodium (<= 1.0.20) that has a signature verification flaw.
Heap out-of-bounds read in the Perl module Crypt::OpenSSL::PKCS12 before version 1.96 lets a crafted PKCS#12 file leak a
Heap out-of-bounds read in the Crypt::OpenSSL::X509 Perl module (versions before 2.1.3) lets a crafted X.509 certificate
Integer overflow in Crypt::NaCl::Sodium Perl module through version 2.001 on 32-bit systems. The Sodium.xs binding casts
Private-key recovery in the Crypt::DSA Perl module (all versions before 1.22) stems from a biased random number generato
NULL pointer dereference in Crypt::OpenSSL::PKCS12 before version 1.98 for Perl enables process crashes when any caller
Timing side-channel in the Crypt::Password Perl module (versions through 0.28) allows attackers to incrementally guess a
Denial of service in the Crypt::OpenSSL::X509 Perl module before 2.1.3 lets a malformed X.509 certificate crash any Perl
Heap buffer overflow in Crypt::SysRandom::XS before version 0.010 allows denial of service through negative length param
Heap buffer overflow in Perl's Crypt::URandom module (versions 0.41-0.54) allows denial of service through integer wrapa
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
EUVD-2026-36456
GHSA-3rw7-pf56-37cv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB