Crypt::OpenSSL::X509 CVE-2026-58101
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft cert with malformed/empty extension
-
DeliveryDeliver cert to Perl service (e.g. client-cert TLS handshake)
-
ExploitApp calls affected X509 helper
-
ExecutionX509V3_EXT_d2i returns NULL / keyid NULL
-
PersistUnchecked NULL dereference
-
ImpactSIGSEGV crashes Perl process (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) the target Perl application to invoke one of the affected accessors - basicC (basicConstraints), ia5string, auth_att, or keyid_data (authority/subject key identifier) - on (2) an attacker-supplied, untrusted X.509 certificate. The specific triggers are an extension whose DER fails to parse (making X509V3_EXT_d2i return NULL) or a well-formed but empty Authority Key Identifier (SEQUENCE 30 00, or one carrying only issuer/serial) so akid->keyid is NULL. Limiting factor: the vulnerability is not self-triggering - if the deploying application never feeds untrusted certificates into these particular helpers (e.g. it only inspects internally-issued/trusted certs, or only reads subject/issuer/validity fields), it is not exposed. No authentication, user interaction, or non-default module configuration is needed beyond the application choosing to parse the extension. |
| Impact | The signals are internally consistent for a network-reachable availability bug: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H = 7.5, with C:N/I:N confirming this is crash-only with no data exposure or code execution. It is NOT in CISA KEV and no public exploit has been identified, so this is a legitimate-but-not-emergency issue rather than a top-priority actively-exploited flaw. The one nuance the raw CVSS hides: PR:N/UI:N assumes the certificate reaches an affected helper automatically, but the description states the crash requires 'a caller invoking an affected helper on an extension from an untrusted certificate' - so real-world exploitability depends on whether the deploying application actually calls basicC/ia5string/auth_att/keyid_data on attacker-supplied certs. Where an app parses inbound certificates (TLS client-cert validation, S/MIME, certificate-inspection services) exposure is real; where certs are trusted/internal, practical risk drops. Impact is bounded to a single Perl process SIGSEGV - availability of one worker, not host compromise. |
| Exploit ScenarioDerived | An attacker submits an X.509 certificate containing a malformed basicConstraints or authorityKeyIdentifier extension (or an empty AKI SEQUENCE, DER 30 00) to a Perl service that inspects certificates using Crypt::OpenSSL::X509 - for example a TLS client-certificate handler or a certificate-analysis API. When the service calls an affected helper on the crafted extension, X509V3_EXT_d2i returns NULL (or keyid is NULL) and the unchecked dereference triggers a SIGSEGV, killing the process and denying service. No public exploit is identified at time of analysis, but the crash requires only a single crafted certificate given low attack complexity. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 14, 2026
Denial of service in the Crypt::OpenSSL::X509 Perl module before 2.1.3 lets a malformed X.509 certificate crash any Perl process that parses it. Four helper functions (basicC, ia5string, auth_att, keyid_data) dereference NULL pointers returned by OpenSSL's X509V3_EXT_d2i() on unparseable extensions - and keyid_data/auth_att additionally deref an akid->keyid field that is legitimately NULL for an empty Authority Key Identifier (DER 30 00). There is no public exploit identified at time of analysis, but the fix commit and a clear crash mechanism are published; CVSS is 7.5 (availability-only).
RemediationAI
Vendor-released patch: upgrade Crypt::OpenSSL::X509 to 2.1.3 or later (the fix commit is https://github.com/dsully/perl-crypt-openssl-x509/commit/4c1e2370556097c253ae27abe9e1097ea377fbd2, released as CPAN 2.1.3). If you cannot upgrade immediately, the practical compensating control is to stop passing untrusted certificates into the vulnerable accessors: avoid calling basicC/ia5string/auth_att/keyid_data (e.g. via the extensions()/pubkey helpers that exercise them) on certificates you have not already validated, and validate/pre-parse certificates with a hardened path before inspection - trade-off is reduced functionality for code that legitimately needs those fields. Where the module runs inside a request worker, isolate parsing in a child/forked process or supervised worker so a SIGSEGV crashes only that worker and is auto-restarted rather than taking down the service. Review the changelog at https://metacpan.org/release/JONASBN/Crypt-OpenSSL-X509-2.1.3/source/Changes.md to confirm the fix covers your usage.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Crypt::OpenSSL::X509 is a Perl XS binding (C glue in X509.xs) that wraps OpenSSL's X.509 certificate API so Perl callers can inspect certificate fields and extensions. The root cause is CWE-476 (NULL Pointer Dereference): OpenSSL's X509V3_EXT_d2i(ext) returns NULL when an extension's DER content fails to decode, but the affected helpers used that return value directly. basicC() dereferenced the BASIC_CONSTRAINTS pointer, ia5string() dereferenced the ASN1 string, and auth_att()/keyid_data() dereferenced the AUTHORITY_KEYID pointer and its optional keyid member. Notably, keyid can be NULL even on a successful parse - an AKI SEQUENCE encoded as 30 00 (empty, or one carrying only issuer/serial) yields akid->keyid == NULL - so the crash triggers on well-formed-but-empty extensions, not only on decode failures. The affected package per CPE is cpe:2.3:a:jonasbn:crypt::openssl::x509 (all versions up to the fix).
Know when Crypt 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:N/I:N/A:H
Malformed cert delivered remotely with low complexity and no auth/UI; crash-only so C:N/I:N and A:H, though impact is a single-process SIGSEGV and reachability is application-dependent.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
Crypt::OpenSSL::X509 versions before 2.1.3 for Perl allow denial of service via NULL pointer dereference.
X509V3_EXT_d2i(ext) returns NULL when an extension's DER value fails to parse. basicC, ia5string, and auth_att dereference its result without a NULL check. keyid_data also dereferences akid->keyid, which is NULL for an empty AKI SEQUENCE (DER 30 00) even when the parse succeeds.
A caller invoking an affected helper on an extension from an untrusted certificate triggers a SIGSEGV that crashes the Perl process.
Executive ViewAI
Crypt::OpenSSL::X509 Perl module before version 2.1.3 contains a denial-of-service vulnerability allowing attackers to crash any Perl application that parses malformed X.509 certificates. Organizations using this module in production systems face service availability risk from untrusted certificate sources. A vendor patch is available and should be deployed immediately.
Apply vendor patch.
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
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)CVE.org
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
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
Crypt::Sodium::XS versions through 0.001000 for Perl has potential integer overflows. Combined aead encryption, combined
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB