comp-colorsPyPI
comp-colors is a confirmed malicious PyPI package (MAL-2026-10986) that steals credentials and exfiltrates sensitive data (malicious version 0.1.5). Do not install it — remove it immediately and rotate any exposed credentials.
Malicious code in comp-colors (PyPI)
What this malware does
The package presents itself as a local color-palette toolkit but exports a public colors() function in remote.py that POSTs to the hardcoded endpoint https://www.fastsyncapi.com/v1/colors, writes the returned bytes to a NamedTemporaryFile with a server-controlled filename/extension, and executes them without any hash or signature verification. On Windows the code silently installs.msi responses via msiexec.exe /i /qn /norestart and then launches a fixed binary path; on other platforms it invokes os.startfile / xdg-open / open on the dropped file. A companion update() function collects the installer's hostname, a SHA-256 HWID derived from hostname and MAC address (uuid.getnode()), and locale-derived country code and POSTs them along with a caller-supplied activation key to https://www.fastsyncapi.com/v1/update; the response token is persisted at ~/.config/npm-packages/vtoken.json (Linux) or %LOCALAPPDATA%/npm-packages/vtoken.json (Windows) and reused by the dropper. All classes, functions, parameters, and locals across src/pycolored/* are renamed to random tokens (e.g. _LBOfQSgdKR5ic9eT, _ji0wfcMCs1P5dOqg), and the undocumented colors and update symbols are exported in __all__ while the README only advertises a benign colorsv1 helper. The npm-packages token directory inside a Python package indicates cross-registry actor infrastructure reuse.
The package hides code to download and execute a remote executable from a newly created fastsyncapi[.]com domain. It is disguised as a remote 'fast color helper,' as opposed to the local helper, also included in the code, that only mimics any functionality. The malicious part is not immediately active: to download the binary, a key is required, which was not included in the analyzed versions. The downloaded binary is executed, and at least in one case disguised as 'AppHostRegistrationVerifier'. The package is likely prepared for multi-stage infection, but the trigger code using it was not identified.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-07-colorstack
Reasons (based on the campaign):
-
Downloads and executes a remote executable.
-
action-hidden-in-lib-usage
Malicious versions
Indicators of compromise (SHA-256)
Detection & response playbook
Credential / info stealerFind it
Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for comp-colors (version 0.1.5). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging comp-colors across your stack and pipelines.
If you installed it — respond
comp-colors is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.
Did it already run?
If comp-colors was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.
How O3 protects you
O3 blocks comp-colors before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
- Kamil Mańkowski (kam193) · reporter
Detect & block this
O3 blocks comp-colors-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.