Skip to content
OpenAdvisories
Malicious MAL-2026-12502

gcli-control

PyPI package · versions 0.12.2, 0.5.0, 0.12.4, 0.11.1

Reported Aug 5, 2026 · Updated Aug 5, 2026

If this package is installed

Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.

Details

Source: amazon-inspector (b8bd4de0b73d7df676127ce8c632117fc7ea8d008bf941fb7d385f67a84f8d67)
The package installs and runs a host daemon (`python -m gcli host`) that polls a shared JSON document at api.npoint.io for commands, decrypts them, executes them on the installer's machine, and posts encrypted results back. Any party who writes to that shared document controls full-host code execution on every daemon polling it. host.py hardcodes a default rendezvous bin ID `599ac3c39189fcc26e5a` shared across all installers who do not override it, and crypto.py implements a `__BYPASS__` password sentinel with a `BY:` base64-only path that disables AES-GCM entirely, allowing anonymous unauthenticated command injection against every daemon on the default bin. The command dispatcher exposes 200+ operations invokable through this channel, including browser_passwords, browser_cookies, keylog_start/read/save, webcam_capture, shell_history, wifi_password, screenshot, and users add/change_password (credential and secret harvesting); and install_startup/install_scheduled/install_watchdog writing Windows Run keys, systemd user services, cron entries, and startup-folder launchers that relaunch `python -m gcli host` on boot, plus an elevator module offering elevate_uac / elevate_sudo / persist_admin for privilege escalation. The combination is a full remote-access trojan: remote command execution, credential/browser-secret exfiltration, keylogging and webcam capture, boot persistence, and privilege elevation, all reachable by any party who knows the default rendezvous bin.