{"id":"CVE-2026-58102","state":"PUBLISHED","title":"Crypt::OpenSSL::X509 versions before 2.1.3 for Perl allow a heap out-of-bounds read via a long certificate extension OID in hv_exts","description":"Crypt::OpenSSL::X509 versions before 2.1.3 for Perl allow a heap out-of-bounds read via a long certificate extension OID in hv_exts.\n\nWhen building the extension hash (via extensions(), extensions_by_long_name(), extensions_by_oid(), or has_extension_oid()), the code passes OBJ_obj2txt()'s return value as the hash-key length; because that value is the OID's full text length rather than the bytes written to the fixed-size buffer (129 bytes), an OID whose text is longer than the 129-byte buffer causes a read past the allocation, exposing adjacent heap memory as the returned hash key. extensions_by_name() uses the static shortname path and is not affected.","publishedAt":"2026-07-13T22:22:48.618Z","updatedAt":"2026-07-14T13:03:15.979Z","severity":{"score":9.1,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H","source":"CISA-ADP"},"assigner":"CPANSec","products":["JONASBN Crypt::OpenSSL::X509"],"affected":[{"vendor":"JONASBN","product":"Crypt::OpenSSL::X509","packageName":"Crypt-OpenSSL-X509","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"2.1.3","versionType":"custom"}],"collectionURL":"https://cpan.org/modules","programFiles":["X509.xs"],"programRoutines":[{"name":"hv_exts"},{"name":"Crypt::OpenSSL::X509::extensions"},{"name":"Crypt::OpenSSL::X509::extensions_by_long_name"},{"name":"Crypt::OpenSSL::X509::extensions_by_oid"}],"repo":"https://github.com/dsully/perl-crypt-openssl-x509"}],"references":["https://github.com/dsully/perl-crypt-openssl-x509/commit/757289bfce095455c104d4adfe9312e7b339620f.patch","https://metacpan.org/release/JONASBN/Crypt-OpenSSL-X509-2.1.3/source/Changes.md"],"weaknesses":["CWE-125"],"ingestedAt":"2026-10-29T20:12:24.861Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/58xxx/CVE-2026-58102.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-58102","state":"PUBLISHED","datePublished":"2026-07-13T22:22:48.618Z","dateUpdated":"2026-07-14T13:03:15.979Z","assignerShortName":"CPANSec","assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","dateReserved":"2026-06-29T06:35:04.718Z"},"containers":{"cna":{"title":"Crypt::OpenSSL::X509 versions before 2.1.3 for Perl allow a heap out-of-bounds read via a long certificate extension OID in hv_exts","descriptions":[{"lang":"en","value":"Crypt::OpenSSL::X509 versions before 2.1.3 for Perl allow a heap out-of-bounds read via a long certificate extension OID in hv_exts.\n\nWhen building the extension hash (via extensions(), extensions_by_long_name(), extensions_by_oid(), or has_extension_oid()), the code passes OBJ_obj2txt()'s return value as the hash-key length; because that value is the OID's full text length rather than the bytes written to the fixed-size buffer (129 bytes), an OID whose text is longer than the 129-byte buffer causes a read past the allocation, exposing adjacent heap memory as the returned hash key. extensions_by_name() uses the static shortname path and is not affected."}],"affected":[{"vendor":"JONASBN","product":"Crypt::OpenSSL::X509","packageName":"Crypt-OpenSSL-X509","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"2.1.3","versionType":"custom"}],"collectionURL":"https://cpan.org/modules","programFiles":["X509.xs"],"programRoutines":[{"name":"hv_exts"},{"name":"Crypt::OpenSSL::X509::extensions"},{"name":"Crypt::OpenSSL::X509::extensions_by_long_name"},{"name":"Crypt::OpenSSL::X509::extensions_by_oid"}],"repo":"https://github.com/dsully/perl-crypt-openssl-x509"}],"references":[{"url":"https://github.com/dsully/perl-crypt-openssl-x509/commit/757289bfce095455c104d4adfe9312e7b339620f.patch","tags":["patch"]},{"url":"https://metacpan.org/release/JONASBN/Crypt-OpenSSL-X509-2.1.3/source/Changes.md","tags":["release-notes"]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-125","description":"CWE-125 Out-of-bounds Read","lang":"en","type":"CWE"}]}],"providerMetadata":{"shortName":"CPANSec","orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","dateUpdated":"2026-07-13T22:22:48.618Z"},"solutions":[{"lang":"en","value":"Upgrade to Crypt::OpenSSL::X509 2.1.3 or later."}],"source":{"discovery":"UNKNOWN"},"workarounds":[{"lang":"en","value":"Callers that must enumerate extensions of untrusted certificates can restrict enumeration to extensions_by_name(), which uses the static shortname path and does not trigger the over-read."}],"x_generator":{"engine":"cpansec-cna-tool 0.1"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":9.1,"attackVector":"NETWORK","baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H","integrityImpact":"NONE","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"NONE","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"timestamp":"2026-07-14T13:02:35.283353Z","id":"CVE-2026-58102","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-07-14T13:03:15.979Z"}}]}}}