Skip to main content

Crypt::Password EUVDEUVD-2026-45894

| CVE-2026-6656 HIGH
Observable Timing Discrepancy (CWE-208)
2026-07-20 CPANSec GHSA-c9g9-v2j9-8ffv
7.5
CVSS 3.1 · Vendor: CPANSec
Share

Severity by source

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

Remote but timing attacks need many low-noise samples so AC:H; no auth needed (PR:N); leak is partial hash information not full plaintext, so C:L and I/A:N.

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

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

3
Analysis Generated
Jul 22, 2026 - 09:28 vuln.today
CVE Published
Jul 20, 2026 - 07:01 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 20, 2026 - 07:01 cve.org
HIGH 7.5

DescriptionCVE.org

Crypt::Password versions through 0.28 for Perl are susceptible to timing attacks.

The check_password method uses the built-in eq operator. This allows discrepancies in timing to be used to guess the underlying hash.

AnalysisAI

Timing side-channel in the Crypt::Password Perl module (versions through 0.28) allows attackers to incrementally guess a stored password hash because check_password compares values with Perl's short-circuiting eq operator instead of a constant-time comparison. The flaw is classic CWE-208 (Observable Timing Discrepancy); it carries a CVSS 7.5 but a very low EPSS (0.14%, 4th percentile) and no public exploit identified at time of analysis, and SSVC records exploitation status as none. A vendor patch is available.

Technical ContextAI

Crypt::Password is a Perl convenience wrapper around crypt()-style password hashing distributed on CPAN by author DRSTEVE (CPE cpe:2.3:a:drsteve:crypt::password). Its check_password routine (see lib/Crypt/Password.pm lines ~190-193) validates a candidate by hashing it and comparing the result to the stored hash using the built-in eq string-equality operator. eq is not constant-time: it returns as soon as it finds the first differing byte, so the comparison duration correlates with how many leading characters match. This is the textbook root cause of CWE-208, where measurable timing discrepancies leak information about a secret. The correct mitigation class is a constant-time comparison (e.g. a length-independent XOR/accumulator compare) so that verification time is independent of how many bytes match.

RemediationAI

Patch available per vendor advisory - upgrade to the fixed release published on CPAN by author DRSTEVE above 0.28 (obtain the exact fixed version from the CPAN release page https://metacpan.org/release/DRSTEVE/Crypt-Password-0.28/source/lib/Crypt/Password.pm and the RT ticket https://rt.cpan.org/Ticket/Display.html?id=180162; the input confirms a patch exists but does not state the exact fixed version number, so verify it on CPAN before pinning). Debian users should apply the distribution security update once released for the two tracked releases. As an interim compensating control, replace the eq-based comparison in any wrapper code with a constant-time comparison and, at the deployment level, add rate-limiting and randomized delays on authentication endpoints that call check_password to raise the sampling cost of a timing attack - noting that added jitter increases latency and only slows, rather than eliminates, the leak. Reference oss-security discussion: https://seclists.org/oss-sec/2026/q3/176.

More in Crypt

View all
CVE-2026-16235 CRITICAL
9.8 Jul 20

Predictable salt generation in Crypt::Password through version 0.28 for Perl weakens the security of stored password has

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-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-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-30910 HIGH
7.5 Mar 08

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

CVE-2026-5086 HIGH
7.5 Apr 13

Secret-recovery via timing side channel in the Perl module Crypt::SecretBuffer before 0.019 lets remote attackers infer

CVE-2026-6659 HIGH
7.5 May 08

Weak salt generation in Crypt::PasswdMD5 (Perl) through version 1.42 enables password hash cracking via predictable rand

Vendor StatusVendor

Debian

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

Share

EUVD-2026-45894 vulnerability details – vuln.today

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