{"api_version":"1","generated_at":"2026-07-05T06:12:48+00:00","cve":"CVE-2026-14570","urls":{"html":"https://cve.report/CVE-2026-14570","api":"https://cve.report/api/cve/CVE-2026-14570.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-14570","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-14570"},"summary":{"title":"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","description":"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.\n\n\"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.\"\n\nAn 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.\n\nKeys used to sign with an affected version should be considered compromised and new keys should be generated.","state":"PUBLISHED","assigner":"CPANSec","published_at":"2026-07-05 02:17:40","updated_at":"2026-07-05 02:17:40"},"problem_types":["CWE-330","CWE-330 CWE-330 Use of Insufficiently Random Values"],"metrics":[],"references":[{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/changes","name":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/changes","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.21/source/lib/Crypt/DSA/Util.pm#L56","name":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.21/source/lib/Crypt/DSA/Util.pm#L56","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/diff/TIMLEGGE/Crypt-DSA-1.21#lib/Crypt/DSA/Util.pm","name":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/diff/TIMLEGGE/Crypt-DSA-1.21#lib/Crypt/DSA/Util.pm","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-14570","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-14570","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"TIMLEGGE","product":"Crypt::DSA","version":"affected 1.22 custom","platforms":[]}],"timeline":[],"solutions":[{"source":"CNA","title":"","value":"Upgrade to version 1.22 or later, which draws the nonce and private key uniformly via rejection sampling (Crypt::DSA::Util::randombelow) with no forced high bit.\n\nRevoke and regenerate any keys used to sign with an affected version.\n\nCrypt::DSA was deprecated in version 1.20. You should migrate to another solution.","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"collectionURL":"https://cpan.org/modules","defaultStatus":"unaffected","packageName":"Crypt-DSA","product":"Crypt::DSA","programFiles":["lib/Crypt/DSA/Util.pm","lib/Crypt/DSA.pm","lib/Crypt/DSA/KeyChain.pm"],"programRoutines":[{"name":"Crypt::DSA::Util::makerandom"},{"name":"Crypt::DSA::sign"},{"name":"Crypt::DSA::KeyChain::generate_keys"}],"repo":"https://github.com/perl-Crypt-OpenPGP/Crypt-DSA","vendor":"TIMLEGGE","versions":[{"lessThan":"1.22","status":"affected","version":"0","versionType":"custom"}]}],"descriptions":[{"lang":"en","value":"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.\n\n\"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.\"\n\nAn 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.\n\nKeys used to sign with an affected version should be considered compromised and new keys should be generated."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-330","description":"CWE-330 Use of Insufficiently Random Values","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-07-05T01:30:12.849Z","orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","shortName":"CPANSec"},"references":[{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.21/source/lib/Crypt/DSA/Util.pm#L56"},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/diff/TIMLEGGE/Crypt-DSA-1.21#lib/Crypt/DSA/Util.pm"},{"tags":["release-notes"],"url":"https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.22/changes"}],"solutions":[{"lang":"en","value":"Upgrade to version 1.22 or later, which draws the nonce and private key uniformly via rejection sampling (Crypt::DSA::Util::randombelow) with no forced high bit.\n\nRevoke and regenerate any keys used to sign with an affected version.\n\nCrypt::DSA was deprecated in version 1.20. You should migrate to another solution."}],"source":{"discovery":"UNKNOWN"},"title":"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","x_generator":{"engine":"cpansec-cna-tool 0.1"}}},"cveMetadata":{"assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","assignerShortName":"CPANSec","cveId":"CVE-2026-14570","datePublished":"2026-07-05T01:30:12.849Z","dateReserved":"2026-07-03T10:37:19.787Z","dateUpdated":"2026-07-05T01:30:12.849Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-07-05 02:17:40","lastModifiedDate":"2026-07-05 02:17:40","problem_types":["CWE-330","CWE-330 CWE-330 Use of Insufficiently Random Values"],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"14570","Ordinal":"1","Title":"Crypt::DSA versions before 1.22 for Perl draw the DSA signing no","CVE":"CVE-2026-14570","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"14570","Ordinal":"1","NoteData":"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.\n\n\"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.\"\n\nAn 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.\n\nKeys used to sign with an affected version should be considered compromised and new keys should be generated.","Type":"Description","Title":"Crypt::DSA versions before 1.22 for Perl draw the DSA signing no"}]}}}