CVE-2026-97230: IO::Socket::SSL::SelfCertificate versions 1.00 for Perl contains malware which executes Python code from an obfuscated URL
IO::Socket::SSL::SelfCertificate versions 1.00 for Perl contains malware which executes Python code from an obfuscated URL.
The generatecertificate 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
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Operational
Investigate systems on which IO::Socket::SSL::SelfCertificate version 1.00 was installed because they should be considered potentially compromised.
Event History
Frequently Asked Questions
How can I check whether the identified package release is present in our environment?
Compare the package archive against SHA-256 ba24ee8ec3b7f47f65bed62e16fb413ace50653cf44bd8ea90914390922831e0 for IO-Socket-SSL-SelfCertificate-1.00.tar.gz. The listed certificate-file artifact has SHA-256 821d38830e5eb8607738421c25ac25f59fff02a6ab67daa32fbd020429454dac at lib/IO/Socket/SSL/SelfCertificate/sample/cert.pem.
What conditions are needed for the payload to run?
The generate_certificate functionality runs the Python code stored as a certificate file. That code attempts to retrieve additional code from a hardcoded HTTP URL, encoded with base64, and executes the response body directly.
What would execution mean for the affected host?
Retrieved code can run with the privileges of the user invoking the affected functionality. The described behavior does not require saving the retrieved script to the host.