Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Perl app using Crypt::OpenSSL::PKCS12 ≤1.94
-
DeliveryObtain target .p12 keystore file
-
ExploitRecognize binary-password usage pattern
-
ExecutionBrute-force truncated keyspace offline
-
PersistRecover private key and certificate
-
ImpactImpersonate or decrypt protected data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Null terminator handling
|
| Exploitation Conditions | Exploitation requires that a Perl application use Crypt::OpenSSL::PKCS12 ≤1.94 AND pass a password containing at least one 0x00 byte before the intended end - in practice this means binary, KDF-derived, HMAC-derived, or hash-output passwords rather than human-typed ASCII passphrases. The attacker must additionally obtain the resulting PKCS12 file to mount an offline attack against the truncated keyspace; the bug itself is not directly network-triggerable despite the AV:N CVSS metric. ASCII-only passphrases that never contain embedded NULs are not impacted, and applications that encode binary key material (hex, base64) before passing it to the module are also unaffected. |
| Impact | The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yields 9.8 Critical, but that score appears to substantially overstate real-world exploitability for this specific class of bug. The vulnerability is a silent truncation in a library that processes locally-supplied password material; there is no network-reachable attack surface inherent to the module itself, so AV:N is questionable and worth verifying with the reporter. There is no CISA KEV listing and no public exploit identified at time of analysis, and EPSS data was not supplied. The realistic risk is cryptographic: PKCS12 containers created by Perl applications that feed binary/KDF-derived passwords to this module have far lower effective key strength than developers believe, making offline brute-force or dictionary attacks against captured .p12 files dramatically cheaper. Priority should therefore be governed by whether downstream applications pass binary passwords (high impact) versus human-typed ASCII passphrases (negligible impact, since those rarely contain NULs). |
| Exploit ScenarioDerived | A developer uses Crypt::OpenSSL::PKCS12 to wrap a private key in a .p12 file, protecting it with a 32-byte HKDF-derived key that happens to contain a 0x00 at offset 5; the module silently truncates the password to 5 bytes before key derivation. An attacker who later obtains the .p12 file (via backup theft, repo leak, or interception) performs an offline brute-force against the effective 5-byte keyspace and recovers the private key in minutes rather than the assumed astronomical time. No public exploit code is identified at time of analysis, but the truncation is trivially reproducible from the description alone. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 18, 2026
Silent password truncation in the Perl module Crypt::OpenSSL::PKCS12 versions up to and including 1.94 causes any password bytes at or after the first embedded NULL byte to be dropped without warning. The flaw stems from password parameters being declared as char* in PKCS12.xs, routing through Perl's default typemap to SvPV_nolen and discarding the Perl-known length before C strlen() truncates the buffer. The result is severe entropy loss for binary, KDF-derived, or HMAC-derived passwords used to protect PKCS12 keystores, with no public exploit identified at time of analysis.
RemediationAI
Upgrade to Crypt::OpenSSL::PKCS12 version 1.95 or later, which is referenced as the fixed release on MetaCPAN (https://metacpan.org/release/JONASBN/Crypt-OpenSSL-PKCS12-1.95/view/Changes.md); consult the oss-security disclosure at http://www.openwall.com/lists/oss-security/2026/05/17/6 and the VulDB advisory at https://vuldb.com/vuln/364433 for additional context. As a compensating control until the upgrade lands, callers should ensure passwords passed to PKCS12 routines are restricted to NUL-free byte sequences - for example, hex- or base64-encode any binary/KDF-derived key material before passing it in, which avoids the truncation entirely at the cost of requiring symmetric encoding on the consumer side. Audit any PKCS12 files previously generated with binary passwords and re-export them under the patched module with safe encodings, because existing keystores retain the weakened entropy until rekeyed.
Affected VersionsENISA
Affected Packages
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::OpenSSL::PKCS12 is a CPAN module providing Perl bindings to OpenSSL's PKCS#12 keystore handling (parsing, creating, and decrypting .p12/.pfx files containing private keys and certificate chains). The defect lives in the XS glue layer (PKCS12.xs): because password parameters are typed as char*, Perl's default typemap converts SV scalars using SvPV_nolen, which yields a NUL-terminated C string and discards the SvCUR length Perl already knows. When the underlying C code or OpenSSL routines (e.g., PKCS12_create, PKCS12_parse) subsequently invoke strlen() on that buffer, any byte from the first 0x00 onward is silently lost before reaching the PKCS#12 key derivation function. This is a textbook CWE-170 (Improper Null Termination) issue and effectively becomes a cryptographic entropy-truncation bug whenever the caller passes raw binary key material - for example, the output of HKDF, HMAC, or a hash function - as the PKCS12 password.
Know when OpenSSL 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (9b29abf9-4ab0-4765-b253-1875cd9b441e) · only source for this CVE.
CVSS VectorVendor: 9b29abf9-4ab0-4765-b253-1875cd9b441e
Lifecycle Timeline
2DescriptionCVE.org
Crypt::OpenSSL::PKCS12 versions through 1.94 for Perl truncates passwords with embedded NULLs.
Password parameters in PKCS12.xs are declared char *, which routes through Perl's default typemap to SvPV_nolen. The Perl length is discarded.
The C code (or OpenSSL internally) calls strlen() on the buffer. Any password byte at or after the first NULL is silently dropped. Binary / KDF-derived / HMAC-derived passwords lose entropy without any warnings.
Executive ViewAI
Crypt::OpenSSL::PKCS12 (Perl module) versions 1.94 and earlier silently weaken passwords protecting stored cryptographic keys, without any indication of failure. Organizations relying on this module to secure certificates and keys face undetected compromise of their key protection.
No vendor-released patch identified at time of analysis. Interim mitigations: discontinue use of Crypt::OpenSSL::PKCS12 in affected versions; migrate to alternative Perl/OpenSSL libraries with verified password handling; implement additional encryption layers for PKCS12 files; monitor for unusual certificate/key access patterns; escalate private key exfiltration detection. Monitor vendor advisory for patch availability.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
In order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt(). Rated cri
The dtls1_reassemble_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
The SSLv2 protocol, as used in OpenSSL before 1.0.1s and 1.0.2 before 1.0.2g and other products, requires a server to se
The ssl3_get_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8zd, 1.0.0 before 1.0.0p, and 1.0.1 before 1.0.1k
In addition to the c_rehash shell command injection identified in CVE-2022-1292, further circumstances where the c_rehas
The TLS protocol 1.2 and earlier, when a DHE_EXPORT ciphersuite is enabled on a server but not on a client, does not pro
The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other products, uses nondeterministic CBC padding, which mak
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
The X509_verify_cert function in crypto/x509/x509_vfy.c in OpenSSL 1.0.1n, 1.0.1o, 1.0.2b, and 1.0.2c does not properly
A buffer overrun can be triggered in X.509 certificate verification, specifically in name constraint checking. Rated hig
EUVD-2026-30707
GHSA-hh8h-hxcj-2pm7
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB