Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
Lifecycle Timeline
3DescriptionCVE.org
Crypt::DSA versions through 1.19 for Perl use 2-args open, allowing existing files to be modified.
AnalysisAI
File overwrite and information disclosure in Crypt::DSA through version 1.19 for Perl expose systems where user-controlled input reaches the library's key handling routines. The root cause is use of Perl's 2-argument open() form in lib/Crypt/DSA/Key.pm, which interprets leading or trailing special characters in filenames as I/O mode specifiers, enabling reads from or writes to arbitrary files. CVSS rates this AV:N/AC:L/PR:N/UI:N (Medium, 6.5), though actual exposure depends on application-level code paths; EPSS is 0.01% and this CVE is not in CISA KEV, indicating no public exploit identified at time of analysis.
Technical ContextAI
Crypt::DSA (CPE: cpe:2.3:a:timlegge:crypt::dsa:*:*:*:*:*:*:*:*) is a Perl CPAN module implementing the Digital Signature Algorithm, used for key generation, signing, and verification. The vulnerability maps to CWE-552 (Files or Directories Accessible to External Parties) and originates from the 2-argument form of Perl's open() - open(FH, $filename) - used in lib/Crypt/DSA/Key.pm. In this form, Perl treats leading characters such as '>' (write), '>>' (append), or '<' (read) and trailing '|' (pipe to shell) as mode qualifiers rather than literal filename characters. An application that supplies user-influenced data as the filename argument inadvertently grants those metacharacters semantic power. The fix in version 1.20, visible in the published diff at metacpan.org, converts these calls to the 3-argument form - open(FH, '<', $filename) - which treats the filename purely as a string, eliminating the ambiguity. The oss-security mailing list disclosure (openwall.com, 2026-05-15) and CPANSec reporting corroborate this as a library-level defect.
RemediationAI
Upgrade Crypt::DSA to version 1.20 or later - the vendor-released patch for this vulnerability. Version 1.20 replaces the unsafe 2-argument open() calls in lib/Crypt/DSA/Key.pm with the 3-argument form, eliminating metacharacter interpretation. The changelog and diff are published at https://metacpan.org/release/TIMLEGGE/Crypt-DSA-1.20/changes. Upgrade can be performed via cpan or cpanm: 'cpanm Crypt::DSA' or 'cpan -i Crypt::DSA'. Where immediate patching is not possible, the specific compensating control is to validate and sanitize filenames in application code before passing them to any Crypt::DSA key function - reject or strip characters including '>', '<', '|', and null bytes. This adds input validation logic to the calling application without modifying the library, but does not address the root cause and may be bypassed if sanitization is incomplete.
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 allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-30668
GHSA-5cq6-9f97-wjwx