{"id":"CVE-2026-97230","revision":null,"records":[{"revision":"26f4c3140c064eb1b7f99db6f0052022","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-97230","aliases":[],"title":"IO::Socket::SSL::SelfCertificate versions 1.00 for Perl contains malware which executes Python code from an obfuscated URL","description":"IO::Socket::SSL::SelfCertificate versions 1.00 for Perl contains malware which executes Python code from an obfuscated URL.\n\nThe generate_certificate runs a Python script saved as a certificate file.  The pyhton script attempts to retrieve code from a hardcoded http URL that is obfuscated with base64 encoding and run the response body directly.\n\nThe impact is that arbitrary code can be invoked as the user, without a dropped script being saved on the affected host.\n\nThe releases have no test scripts nor build hooks.  The intention may have been to trigger the payload after installation.\n\nThe dropper script is in lib/Crypt/SelfCertificate/sample/cert.pem.\n\nThis is similar to CVE-2026-95831 for the module Crypt::SelfCertificate.\n\nThe SHA-256 digests of the files are\n\n    ba24ee8ec3b7f47f65bed62e16fb413ace50653cf44bd8ea90914390922831e0  IO-Socket-SSL-SelfCertificate-1.00.tar.gz\n    821d38830e5eb8607738421c25ac25f59fff02a6ab67daa32fbd020429454dac  IO-Socket-SSL-SelfCertificate-1.00/lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem\n\n    d483cb7b23b7271cb11cf242bff4a2e1c02df0b9525eb0429abeea8961c399d5  IO-Socket-SSL-SelfCertificate-1.00-upload.tar.gz","state":0,"publishedAt":"2026-09-24T22:36:50.882+00:00","modifiedAt":"2026-09-25T16:11:11.028+00:00","affected":[{"ecosystem":"https://cpan.org/modules","name":"IO-Socket-SSL-SelfCertificate","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://cpan.org/modules\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"modules\": [\n                        \"IO::Socket::SSL::SelfCertificate\"\n                    ],\n                    \"packageName\": \"IO-Socket-SSL-SelfCertificate\",\n                    \"packageURL\": \"pkg:cpan/IO-Socket-SSL-SelfCertificate\",\n                    \"programFiles\": [\n                        \"lib/IO/Socket/SSL/SelfCertificate.pm\",\n                        \"lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"status\": \"affected\",\n                            \"version\": \"1.00\",\n                            \"versionType\": \"custom\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://www.nntp.perl.org/group/perl.cpan.testers.discuss/2026/09/msg4756.html","https://www.cve.org/CVERecord?id=CVE-2026-95831"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-97230","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-97230","identifiers":["CVE-2026-97230"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-12T10:55:30.8237330+00:00","complete":true,"records":1779,"lastAttemptAt":"2026-11-12T10:55:30.823733+00:00","lastSuccessAt":"2026-11-12T10:55:31.0556782+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:55:31.055679+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-64752486c567b55b31fb0d7225f5222bcd0019564ac0ac5f0649e242c7b19299-597d2a846bb8b004ef04143ee27b4f2061367ce1f574db03c0eec66ce3f0654b","complete":true,"records":424644,"lastAttemptAt":"2026-11-12T10:53:33.7939567+00:00","lastSuccessAt":"2026-11-12T10:53:33.7645522+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:53:33.7939567+00:00","snapshotPublishedAt":"2026-11-12T10:28:09+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-9db698e4659747149ec1092e3d34a5a1","complete":true,"records":13764,"lastAttemptAt":"2026-11-12T10:56:11.9015763+00:00","lastSuccessAt":"2026-11-12T09:56:01.656+00:00","error":null,"lastVerifiedAt":"2026-11-12T09:56:01.656+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13817,"expectedIdentifiers":13817,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-12T10:55:30.8237330+00:00","complete":true,"records":1097,"lastAttemptAt":"2026-11-12T10:55:30.823733+00:00","lastSuccessAt":"2026-11-12T10:55:31.0564011+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:55:31.0564012+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-bd366c4173b74364bb995788ecd92c36","complete":false,"records":13764,"lastAttemptAt":"2026-11-12T10:56:10.5374387+00:00","lastSuccessAt":"2026-11-12T10:56:10.532+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:56:10.532+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13313,"expectedIdentifiers":13817,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-3562b6c78fd1bd0f0b55daf66a0926ae24f65e462df7f6d928caad458fc696bf","complete":true,"records":9947,"lastAttemptAt":"2026-11-12T10:55:30.6813009+00:00","lastSuccessAt":"2026-11-11T04:27:43.6877707+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:55:30.6813009+00:00","snapshotPublishedAt":"2026-11-11T03:32:46+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-456002455e0ab94bb92c95476d4e6d175c104cd594749982afd96c893728ecbc","complete":true,"records":2010,"lastAttemptAt":"2026-11-12T10:53:33.9269183+00:00","lastSuccessAt":"2026-11-11T02:36:58.1276999+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:53:33.9269183+00:00","snapshotPublishedAt":"2026-11-11T01:17:51+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-f46f74c6a30a9b6e4cfb481719c6d35521ebec2d53ebf163223d093ae587eb9d","complete":true,"records":3106,"lastAttemptAt":"2026-11-12T10:55:30.7817941+00:00","lastSuccessAt":"2026-11-12T09:55:31.1176285+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:55:30.7817941+00:00","snapshotPublishedAt":"2026-11-12T09:48:13+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-cafddcfb656ee3e2c62171513201ded79d8731137bd7467a5e566349080db7d4","complete":true,"records":231700,"lastAttemptAt":"2026-11-12T10:55:30.5507315+00:00","lastSuccessAt":"2026-11-12T10:55:29.0211827+00:00","error":null,"lastVerifiedAt":"2026-11-12T10:55:30.5507315+00:00","snapshotPublishedAt":"2026-11-12T10:33:04+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}