Skip to main content

Crypt::DSA CVE-2026-14570

| EUVDEUVD-2026-41713 HIGH
Use of Insufficiently Random Values (CWE-330)
2026-07-05 CPANSec GHSA-v6rc-95xw-8xp5
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
5.9 MEDIUM

Offline lattice attack requiring collection of multiple signatures raises AC to High; no auth or interaction needed (PR:N/UI:N); impact is full private-key disclosure (C:H), with forgery a downstream consequence not scored here.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Red Hat
7.5 HIGH
qualitative

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

4
Analysis Generated
Jul 22, 2026 - 18:30 vuln.today
Patch available
Jul 05, 2026 - 03:01 EUVD
CVE Published
Jul 05, 2026 - 01:30 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 05, 2026 - 01:30 cve.org
HIGH 7.5

DescriptionCVE.org

Crypt::DSA versions before 1.22 for Perl draw the DSA signing nonce and private key from a biased random generator, leading to private-key recovery.

"Crypt::DSA::Util::makerandom forces the high bit of every value it returns to obtain an exactly N-bit integer for prime search. The signing nonce and the private key are drawn from makerandom. Because the high bit is always set, the result is not uniform: its top bit is fixed, producing insecure values."

An attacker who collects a modest number of signatures under an affected key, together with the public key, can recover the private key with a lattice attack.

Keys used to sign with an affected version should be considered compromised and new keys should be generated.

AnalysisAI

Private-key recovery in the Crypt::DSA Perl module (all versions before 1.22) stems from a biased random number generator that forces the high bit of every value returned by Crypt::DSA::Util::makerandom, making both the DSA signing nonce and the private key non-uniform. An attacker who obtains the public key plus a modest number of signatures produced under an affected key can reconstruct the private key using a lattice attack. There is no public exploit identified at time of analysis, but the underlying nonce-bias lattice technique is well documented and EPSS remains low at 0.21%.

Technical ContextAI

Crypt::DSA is a pure-Perl implementation of the Digital Signature Algorithm (DSA/DSS). The flaw lives in the utility routine Crypt::DSA::Util::makerandom (lib/Crypt/DSA/Util.pm), which was designed to force the top bit high so that prime-search candidates are exactly N bits wide. That behavior is correct for generating prime candidates but wrong when the same function is reused to draw the per-signature nonce (k) and the long-term private key (x): the fixed high bit removes one bit of entropy and, more importantly, makes the values non-uniform with a known structural bias. DSA is acutely sensitive to nonce bias - even a few known bits of k across several signatures let an attacker set up a hidden number problem and solve for the private key via lattice reduction (LLL/BKZ). This maps to CWE-330 (Use of Insufficiently Random Values); the root cause is not a broken PRNG source but a post-processing step that destroys uniformity.

RemediationAI

Vendor-released patch: Crypt::DSA 1.22 - upgrade to 1.22 or later from CPAN immediately (see the change log at https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/changes and the fix diff at https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/diff/TIMLEGGE/Crypt-DSA-1.21). Upgrading alone is not sufficient: because the bias affects key generation and signing, any key that was ever generated or used to sign with an affected version must be treated as compromised and rotated - generate fresh DSA keys (or migrate to a modern scheme) after patching and re-issue/re-sign as needed. As a compensating step until keys are rotated, limit exposure of existing signatures produced by affected keys (an attacker needs several to run the lattice attack) and revoke trust in the old public keys where a revocation mechanism exists; note this can break signature verification for consumers still pinned to the old key. Consult the CPANSec advisory at https://seclists.org/oss-sec/2026/q3/28 and https://nvd.nist.gov/vuln/detail/CVE-2026-14570 for details.

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-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-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

Share

CVE-2026-14570 vulnerability details – vuln.today

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