Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

polydata-analyticsPyPI

Malicious code in polydata-analytics (PyPI) Remove it immediately and rotate any exposed credentials.

MAL-2026-4285
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
pip uninstall polydata-analytics

What this malware does

Package self-describes as a Polymarket market-data analytics tool but ships a Windows clipboard monitor (src/polymarket_data_fetcher/_clipper/win_clip.py) that detects copied BTC/ETH/SOL/TRX/Polygon/BSC wallet addresses and silently overwrites them with attacker-controlled replacement addresses, redirecting cryptocurrency transfers to the attacker. The replacement address table and persistence configuration are stored as XOR-encrypted blobs (_W and _P) in src/polymarket_data_fetcher/_obf.py and decoded at runtime via eval() of a host-key-derived decryption, hiding the attacker wallets from static review. The package installs four redundant persistence vectors per platform: on Linux, ~/.config/autostart/data-fetcher.desktop, a user systemd service d-clipper-user.service, an appended background launcher line in /.bashrc//.profile, and an @reboot crontab entry; on Windows, an HKCU...\Run\DataFetcher registry value, a Startup-folder shortcut, an sc-created DataService service when admin, and a schtasks /sc onlogon /rl highest scheduled task named DataUpdater; on macOS, a ~/Library/LaunchAgents/com.datafetcher.plist with RunAtLoad, Folder Actions registration, and an osascript-added login item named 'Data Sync'. Every malicious code path is gated by an anti-analysis check (src/polymarket_data_fetcher/_utils.py) that enumerates VBoxManage, VMware, VirtualBox, QEMU, Wireshark, IDA, OllyDbg, Process Hacker and aborts on sandbox-shaped usernames — characteristic malware shape, never present in legitimate analytics tooling. The advertised fetch_market_data() function is a thin wrapper around polymarket.com/gamma/markets and exists only as cover; main.py invokes _bg_services() and an infinite sleep loop, so running the bundled polydata-fetcher CLI launches the clipper and persistence in the background. Author metadata is placeholder ('Data Analytics Team [email protected]') with no real publisher identity.

The code attempts to monitor the clipboard and replace copied cryptocurrency addresses, as well as establish persistence.

Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-05-polymarket-data-fetcher

Reasons (based on the campaign):

  • peristence-autorun

  • obfuscation

  • crypto-related

  • The package contains code to detect if it is running in a sandbox environment.

  • clipboard-modify

  • persistence

Malicious versions

2 flagged
1.3.01.3.1

Indicators of compromise (SHA-256)

1b11035719acc6b849ae1ecc983db8841fd3676b4628ebcef0a24392d872eb5e
04c2f2ae400ee7411678735073e22d4c662de5653a4add84eaca159ed0ba004a

Detection & response playbook

Credential / info stealer
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for polydata-analytics (2 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging polydata-analytics across your stack and pipelines.

  2. If you installed it — respond

    polydata-analytics 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.

  3. Did it already run?

    If polydata-analytics 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.

  4. How O3 protects you

    O3 blocks polydata-analytics 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

No. polydata-analytics on PyPI has been identified as a malicious package (versions 1.3.0, 1.3.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

2026-05-polymarket-data-fetcherIN-MAL-2026-004523

References

Credits

  • Amazon Inspector · finder
  • Kamil Mańkowski (kam193) · reporter

Detect & block this

O3 blocks polydata-analytics-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

polydata-analytics (PyPI) malicious package — MAL-2026-4285 | O3 Security