Skip to main content

Crypt::Password CVE-2026-16235

| EUVDEUVD-2026-45895 CRITICAL
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-07-20 CPANSec GHSA-vhqp-3rvr-75rx
9.8
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain password hash database
  2. Exploit
    Reconstruct predictable rand() salts
  3. Execution
    Precompute/optimize offline cracking
  4. Impact
    Recover plaintext credentials

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 the deployment actually uses Crypt::Password ≤0.28 to generate salts (the vulnerable rand()-based path in lib/Crypt/Password.pm) AND that the attacker already possesses the resulting password hashes, since predictable salts only provide advantage during offline cracking of an obtained hash store. The primary limiting factor is this prerequisite access to the hashes - the flaw does not itself grant remote access or code execution despite the published AV:N/PR:N vector. Impact is further bounded by whether the application relies on this module's salt rather than supplying its own CSPRNG-generated salt.

Impact

The signals conflict sharply and must be weighed against the actual mechanism. The published CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H = 9.8) implies trivial remote total compromise, but the described flaw is a library weakness in salt generation, not a directly network-reachable code-execution or disclosure path - the CVSS score appears substantially inflated relative to the description. Supporting a lower real-world priority: EPSS is only 0.14% (4th percentile), there is no KEV listing, no known POC, and SSVC reports Exploitation: none. SSVC does flag Automatable: yes and Technical Impact: total, reflecting that once relevant, weak salts affect the whole hash corpus mechanically. Net assessment: this is a genuine cryptographic-hygiene defect but a low-urgency, defense-in-depth issue for most deployments, not a 9.8-grade emergency - exploitation is contingent on an attacker already holding the password hashes. Verify severity with the vendor/CPANSec advisory rather than acting on the raw 9.8.

Exploit ScenarioDerived

An attacker who exfiltrates a password-hash store (via SQL injection, backup theft, or insider access) from an application using Crypt::Password ≤0.28 can predict or reconstruct the weakly generated salts, then run precomputation or optimized offline cracking to recover plaintext passwords far faster than properly salted hashes would allow. No public POC is known, and the attack presupposes prior access to the hashed credentials rather than direct remote exploitation of the library.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 22, 2026

Predictable salt generation in Crypt::Password through version 0.28 for Perl weakens the security of stored password hashes by seeding salts with Perl's built-in rand() function, which is not cryptographically secure. An attacker who obtains a password hash database can more easily precompute or predict salts, reducing the cost of offline cracking. There is no public exploit identified at time of analysis, EPSS is low (0.14%, 4th percentile), and CISA SSVC records no observed exploitation.

RemediationAI

Patch available per vendor advisory: upgrade Crypt::Password to a release later than 0.28 that replaces rand() with a cryptographically secure source; an exact fixed version number is not confirmed in the available data, so pull the latest release from CPAN/MetaCPAN and confirm the salt-generation code (lib/Crypt/Password.pm ~L306-309) no longer calls rand(). Debian users should update via the tracked distribution packages once fixed builds land. As a compensating control until patched, avoid relying on this module's built-in salt for new hashes - generate salts from a CSPRNG (e.g. Crypt::URandom / /dev/urandom or Bytes::Random::Secure) and pass them in, and force re-hashing of stored credentials on next login so predictable-salt hashes are retired; the trade-off is application code changes and a credential-migration window. Consult the disclosure threads at https://seclists.org/oss-sec/2026/q3/175 and http://www.openwall.com/lists/oss-security/2026/07/20/3 for coordination details.

Affected VersionsENISA

Crypt::Password 0 ≤0.28

Affected Packages

euvd crypt_password no fix

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::Password is a Perl CPAN module (author DRSTEVE) that wraps the system crypt() facility to hash and verify passwords, generating a per-password salt for algorithms such as SHA-crypt. The root cause is CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator): the affected code path (lib/Crypt/Password.pm, lines ~306-309 per the MetaCPAN reference) derives salt bytes from Perl's rand(), a non-cryptographic PRNG whose output is deterministic given knowledge of, or ability to reconstruct, its seed. Because rand() is designed for statistical randomness rather than unpredictability, salts produced this way are guessable, undermining the salt's purpose of defeating precomputation (rainbow-table) attacks and de-duplicating identical passwords across a hash store.

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

Vendor (CPANSec) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 2.5 LOW

Weak salts only aid offline cracking after an attacker already holds the hashes, so AV:L, AC:H and PR:L; limited confidentiality gain (C:L) with no integrity or availability impact.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
CVE Published
Jul 20, 2026 - 07:02 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 20, 2026 - 07:02 cve.org
CRITICAL 9.8

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

Crypt::Password for Perl versions through 0.28 use cryptographically weak salt generation in password hashing, creating a significant vulnerability if credential databases are compromised. Organizations using this library face elevated risk of offline password-cracking attacks; a vendor patch is available and should be deployed to maintain password security.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Low
niche Perl CPAN password module, limited production footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Crypt

View all
CVE-2026-30909 CRITICAL
9.8 Mar 08

Perl Crypt::NaCl::Sodium module through 2.002 has potential integer overflows in cryptographic operations that could wea

CVE-2025-15444 CRITICAL
9.8 Jan 06

Crypt::Sodium::XS for Perl bundles a vulnerable version of libsodium (<= 1.0.20) that has a signature verification flaw.

CVE-2026-9265 CRITICAL
9.1 Jun 20

Heap out-of-bounds read in the Perl module Crypt::OpenSSL::PKCS12 before version 1.96 lets a crafted PKCS#12 file leak a

CVE-2026-58102 CRITICAL
9.1 Jul 13

Heap out-of-bounds read in the Crypt::OpenSSL::X509 Perl module (versions before 2.1.3) lets a crafted X.509 certificate

CVE-2026-2588 CRITICAL
9.1 Feb 23

Integer overflow in Crypt::NaCl::Sodium Perl module through version 2.001 on 32-bit systems. The Sodium.xs binding casts

CVE-2026-14570 HIGH
7.5 Jul 05

Private-key recovery in the Crypt::DSA Perl module (all versions before 1.22) stems from a biased random number generato

CVE-2026-17510 HIGH
7.5 Aug 09

NULL pointer dereference in Crypt::OpenSSL::PKCS12 before version 1.98 for Perl enables process crashes when any caller

CVE-2026-6656 HIGH
7.5 Jul 20

Timing side-channel in the Crypt::Password Perl module (versions through 0.28) allows attackers to incrementally guess a

CVE-2026-58101 HIGH
7.5 Jul 13

Denial of service in the Crypt::OpenSSL::X509 Perl module before 2.1.3 lets a malformed X.509 certificate crash any Perl

CVE-2026-2597 HIGH
7.5 Feb 27

Heap buffer overflow in Crypt::SysRandom::XS before version 0.010 allows denial of service through negative length param

CVE-2026-2474 HIGH
7.5 Feb 16

Heap buffer overflow in Perl's Crypt::URandom module (versions 0.41-0.54) allows denial of service through integer wrapa

CVE-2026-30910 HIGH
7.5 Mar 08

Crypt::Sodium::XS versions through 0.001000 for Perl has potential integer overflows. Combined aead encryption, combined

Vendor StatusVendor

Debian

libcrypt-password-perl
Release Status Fixed Version Urgency
forky, sid vulnerable 0.28-2 -
(unstable) fixed (unfixed) -

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy