Live › package › MAL-2026-17463
Go to dashboardNot triaged yet. The sources’ own description is below.
First seen by InfraStack 2026-10-26 20:51 UTC. All times on this page are UTC.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| voxcpmtts3 | pypi | = 0.1.0; = 0.1.1; = 0.1.2 | – |
Unknown from the sources.
Unknown from the sources.
Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
-= Per source details. Do not edit below this line.=-
The package presents itself as a text-to-speech inference library but ships two bundled binaries that implement a cryptojacking payload. voxcpmtts3/bin/voxcpm-core is XMRig (contains Monero/RandomX/CryptoNight/stratum/Hashrate/DONATE strings); harness.run() chmods it executable and spawns it via subprocess.Popen with a JSON config whose top-level key is assembled by string concatenation ("po"+"ols") to evade static analysis, carrying stratum-protocol fields (user/pass/keepalive/tls). A second bundled binary, voxcpmtts3/bin/cloudflared (~40MB), is launched with 'access tcp --hostname <edge> --url 127.0.0.1:<port>' to open a raw TCP tunnel through Cloudflare Access, hiding the real mining pool address behind a Cloudflare Access hostname and defeating destination-based blocking; a code comment acknowledges the design is to keep the traffic readable at the Cloudflare front door. In parallel, self._hb() POSTs run_id, state, Python tracebacks (up to 4000 chars) and timestamps to https://<edge>/hb through the same attacker-controlled Cloudflare Access hostname, giving the operator a per-victim telemetry channel that also leaks local filesystem paths from error traces. The 'TTS inference', 'coordinator', and 'step/loss/tok/s' terminology in code and README is cover for stratum mining pool concepts.
The package imitates real activity and instead deploys a coin miner.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-10-voxeval
Reasons (based on the campaign):
This page as .md · .json · in your agent: get_signal("MAL-2026-17463")