Skip to main content

Crypt::OpenSSL::PKCS12 EUVDEUVD-2026-30707

| CVE-2026-8721 CRITICAL
Improper Null Termination (CWE-170)
2026-05-17 9b29abf9-4ab0-4765-b253-1875cd9b441e GHSA-hh8h-hxcj-2pm7
9.8
CVSS 3.1 · Vendor: 9b29abf9-4ab0-4765-b253-1875cd9b441e
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Perl app using Crypt::OpenSSL::PKCS12 ≤1.94
  2. Delivery
    Obtain target .p12 keystore file
  3. Exploit
    Recognize binary-password usage pattern
  4. Execution
    Brute-force truncated keyspace offline
  5. Persist
    Recover private key and certificate
  6. Impact
    Impersonate 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

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

Crypt::OpenSSL::PKCS12 0 ≤1.94

Affected Packages

euvd crypt_openssl_pkcs12 no fix

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

Vendor (9b29abf9-4ab0-4765-b253-1875cd9b441e) PRIMARY 9.8 CRITICAL
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

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
CVSS changed
May 18, 2026 - 13:22 NVD
9.8 (CRITICAL)
CVE Published
May 17, 2026 - 19:16 nvd
UNKNOWN (no severity yet)

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.0%
Top 100% exploitable
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.0%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2014-0160 HIGH POC
7.5 Apr 07

The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe

CVE-2021-3711 CRITICAL POC
9.8 Aug 24

In order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt(). Rated cri

CVE-2014-0195 MEDIUM POC
6.8 Jun 05

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

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2016-0800 MEDIUM POC
5.9 Mar 01

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

CVE-2015-0204 MEDIUM POC
4.3 Jan 09

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

CVE-2022-2068 HIGH
7.3 Jun 21

In addition to the c_rehash shell command injection identified in CVE-2022-1292, further circumstances where the c_rehas

CVE-2015-4000 LOW POC
3.7 May 21

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

CVE-2014-3566 LOW POC
3.4 Oct 15

The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other products, uses nondeterministic CBC padding, which mak

CVE-2016-2107 MEDIUM POC
5.9 May 05

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

CVE-2015-1793 MEDIUM POC
6.5 Jul 09

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

CVE-2022-3602 HIGH
7.5 Nov 01

A buffer overrun can be triggered in X.509 certificate verification, specifically in name constraint checking. Rated hig

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