Skip to main content

IO::Socket::SSL::SelfCertificate EUVDEUVD-2026-86479

| CVE-2026-97230 CRITICAL
Embedded Malicious Code (CWE-506)
2026-09-24 CPANSec GHSA-559w-6g2v-jh67
9.8
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

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

  1. Access
    Publish malicious module to CPAN
  2. Delivery
    Victim installs IO::Socket::SSL::SelfCertificate 1.00
  3. Exploit
    Victim calls generate_certificate()
  4. Execution
    Python dropper decodes base64 HTTP URL
  5. Persist
    Fetch remote payload from hardcoded C2
  6. Impact
    Execute response body in-memory as user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Code review, malicious code detection
Exploitation Conditions

Requires the victim to install the specific malicious release IO-Socket-SSL-SelfCertificate-1.00 from CPAN AND to invoke generate_certificate(); the advisory explicitly notes there are no test scripts or build hooks, so the payload does NOT run automatically at install time and must be manually triggered. It further requires outbound HTTP egress to reach the hardcoded, base64-obfuscated C2 URL for the payload to be retrieved and executed. Limiting factors: victim must both install and call the function, the package is a v1.00 malicious upload likely removed from CPAN quickly, and blocked/proxied outbound HTTP would prevent payload retrieval.

Impact

This is not a conventional exploitable vulnerability but a supply-chain malware upload (CWE-506, Embedded Malicious Code): IO::Socket::SSL::SelfCertificate v1.00 on CPAN is itself a malicious dropper. The published CVSS 9.8 (AV:N/AC:L/PR:N/UI:N) overstates network-exploitability - the description explicitly states the package has NO test scripts nor build hooks, meaning it does NOT auto-execute on install and instead requires the victim to install the package AND call generate_certificate(). That makes real-world triggering user-interaction-dependent (UI:R) and effectively local, so AV:N/UI:N is misleading - verify against the reality that a human must run the function. Corroborating signals point AWAY from urgency: EPSS is 0.12% (1st percentile), it is NOT in CISA KEV, and no POC/exploit code is referenced (none is needed - the code IS the payload). The genuine risk is real but narrow: anyone who installed this specific malicious release and invoked its certificate-generation routine would fetch and execute attacker-controlled Python from a hardcoded, base64-obfuscated HTTP URL as their own user. Given the package was flagged by CPANSec and is a brand-new v1.00 malicious upload, exposure is limited to the small set of users who pulled it before removal.

Exploit ScenarioDerived

A developer installs IO::Socket::SSL::SelfCertificate 1.00 from CPAN (e.g., mistaking it for the legitimate IO::Socket::SSL family) and later calls generate_certificate(), which runs the bundled Python dropper (lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem). The script decodes a base64-obfuscated hardcoded HTTP URL, downloads the response body, and executes it in memory as the invoking user with no file dropped to disk. No public POC is referenced because the package itself contains the live malware.

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

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

Alert me

AnalysisAIv1 – Sep 25, 2026

The Perl CPAN distribution IO::Socket::SSL::SelfCertificate version 1.00 is itself the attack artifact: its generate_certificate() routine writes a Python script disguised as a certificate file and executes it, causing base64-obfuscated code to be fetched from a hardcoded HTTP URL and run in memory without ever dropping a script to disk. Anyone who installs the 1.00 tarball and calls that function is exposed - a local, unauthenticated action requiring user interaction (assessed CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H), rather than the remote pre-authentication scenario implied by the CNA's 9.8 network vector - and outbound HTTP egress must be reachable for the payload to be retrieved. The advisory notes there are no test scripts or build hooks, so nothing fires automatically at install time and the payload must be manually triggered; no public exploit code beyond the malicious package itself has been identified at time of analysis, EPSS is negligible at 0.12% (1st percentile), and the nearly identical CVE-2026-95831 covers the sibling Crypt::SelfCertificate module.

RemediationAI

No vendor-released patch or clean successor version is identified in the available data, because version 1.00 is a deliberately malicious upload rather than a flawed release with a fixed update; treat removal as the fix. Confirm whether IO-Socket-SSL-SelfCertificate 1.00 (or any tarball matching the published SHA-256 digests, including the -upload variant and the sample/cert.pem dropper) exists in your CPAN mirror, cartridge, or application lockfiles, and delete or pin away from it immediately; note the trade-off that pinning without deletion leaves the artifact staged for reinstall by cached mirror pulls, so purge the cached tarball as well. If 1.00 was ever installed and generate_certificate() invoked, assume code execution as the invoking user: hunt for Python child processes spawned by the Perl module, review egress logs for outbound HTTP to unexplained hardcoded hosts, rotate credentials and tokens reachable from that account, and rebuild the host rather than attempting to clean it, since the second stage runs in memory and may not persist on disk. As a durable compensating control, block or proxy outbound HTTP/S from build and CI hosts so a base64-obfuscated hardcoded URL cannot be retrieved - the trade-off is that legitimate dependency fetching, CPAN installs, and telemetry will break unless an allowlist is maintained. Cross-check for the sibling Crypt::SelfCertificate issue under CVE-2026-95831 and consult the CPAN testers advisory (https://www.nntp.perl.org/group/perl.cpan.testers.discuss/2026/09/msg4756.html), the oss-security thread (https://seclists.org/oss-sec/2026/q3/925), and the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-97230) for updated removal guidance.

Affected ProductsAI

The single affected artifact identified is the Perl/CPAN distribution IO-Socket-SSL-SelfCertificate version 1.00 (tarball SHA-256 ba24ee8ec3b7f47f65bed62e16fb413ace50653cf44bd8ea90914390922831e0), a malicious upload whose generate_certificate() function executes an embedded Python dropper; a second archive variant, IO-Socket-SSL-SelfCertificate-1.00-upload.tar.gz, carries SHA-256 d483cb7b23b7271cb11cf242bff4a2e1c02df0b9525eb0429abeea8961c399d5, and the dropper file itself hashes to 821d38830e5eb8607738421c25ac25f59fff02a6ab67daa32fbd020429454dac. The closely related module Crypt::SelfCertificate is tracked separately as CVE-2026-95831 and should be treated as equally suspect. No CPE strings were provided, so inventory matching must key off the distribution name, version 1.00, and the digests above; vendor and coordination details appear in the CPAN testers advisory at https://www.nntp.perl.org/group/perl.cpan.testers.discuss/2026/09/msg4756.html, the oss-security post at https://seclists.org/oss-sec/2026/q3/925, the EUVD record https://nvd.nist.gov/vuln/detail/CVE-2026-97230, and the sibling CVE record https://www.cve.org/CVERecord?id=CVE-2026-95831.

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

This is CWE-506 (Embedded Malicious Code), a supply-chain malware upload rather than a memory-safety or injection defect in otherwise legitimate code. The package is a Perl CPAN distribution; its generate_certificate() function is described as running a Python script that has been saved under the guise of a certificate file, with the dropper reported at lib/Crypt/SelfCertificate/sample/cert.pem (the accompanying digest listing shows the same component under lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem). The Python stage reaches out to a hardcoded HTTP URL whose value is obfuscated with base64 encoding, then executes the response body directly, so the second-stage payload lives only in memory and leaves no dropped script for file-based detection. Because exploitation is triggered by the invoking user on the host where the module is installed and invoked, the assessed vector is AV:L with UI:R (PR:N, since the invoked code inherits the caller's privileges with no additional authentication step), which diverges sharply from the CNA's AV:N/AC:L/PR:N/UI:N 9.8 score. No official CPE strings were supplied in the source data; identification should instead rely on distribution name and version plus the published SHA-256 digests, including ba24ee8ec3b7f47f65bed62e16fb413ace50653cf44bd8ea90914390922831e0 for the IO-Socket-SSL-SelfCertificate-1.00.tar.gz archive, 821d38830e5eb8607738421c25ac25f59fff02a6ab67daa32fbd020429454dac for the sample/cert.pem dropper, and d483cb7b23b7271cb11cf242bff4a2e1c02df0b9525eb0429abeea8961c399d5 for IO-Socket-SSL-SelfCertificate-1.00-upload.tar.gz. The absence of test scripts and build hooks, while noted in the description, means the malware depends on a human or automated consumer actually invoking the certificate-generation function after installation.

Know when Python 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 (CPANSec) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

No build/test hooks means the victim must install and manually call generate_certificate() (UI:R, effectively local), after which arbitrary code runs as the user (C/I/A:H).

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

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

Lifecycle Timeline

3
CVSS changed
Sep 25, 2026 - 17:22 NVD
9.8 (CRITICAL)
CVE Published
Sep 24, 2026 - 22:36 cve.org
UNKNOWN (no severity yet)
CVE Published
Sep 24, 2026 - 22:36 cve.org
CRITICAL 9.8

DescriptionCVE.org

IO::Socket::SSL::SelfCertificate versions 1.00 for Perl contains malware which executes Python code from an obfuscated URL.

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

The impact is that arbitrary code can be invoked as the user, without a dropped script being saved on the affected host.

The releases have no test scripts nor build hooks. The intention may have been to trigger the payload after installation.

The dropper script is in lib/Crypt/SelfCertificate/sample/cert.pem.

This is similar to CVE-2026-95831 for the module Crypt::SelfCertificate.

The SHA-256 digests of the files are

ba24ee8ec3b7f47f65bed62e16fb413ace50653cf44bd8ea90914390922831e0 IO-Socket-SSL-SelfCertificate-1.00.tar.gz 821d38830e5eb8607738421c25ac25f59fff02a6ab67daa32fbd020429454dac IO-Socket-SSL-SelfCertificate-1.00/lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem

d483cb7b23b7271cb11cf242bff4a2e1c02df0b9525eb0429abeea8961c399d5 IO-Socket-SSL-SelfCertificate-1.00-upload.tar.gz

Executive ViewAI

Why It Matters

The IO::Socket::SSL::SelfCertificate Perl CPAN distribution version 1.00 is a malicious package whose generate_certificate() routine can execute obfuscated code fetched from an external URL when manually called. Organizations with developer workstations, build systems, or container images that installed this exact version face potential code execution, credential theft, and data compromise, making this a supply-chain exposure that leadership should prioritize. The risk is limited to environments where the package is present and the function is manually triggered with outbound HTTP access; no public exploit identified at time of analysis and no vendor-released patch identified at time of analysis.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Remove or block IO::Socket::SSL::SelfCertificate 1.00, prohibit use of generate_certificate(), restrict outbound HTTP egress, enforce CPAN allowlisting/private mirrors, monitor for obfuscated Python execution from Perl processes, and treat affected hosts as compromised until forensically cleared.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Rare
malicious single-release CPAN upload, tiny footprint, likely removed
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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.1%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
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

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

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-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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