MAL-2026-10780 Malicious code in data-parser-utils (PyPI)
- Package
- data-parser-utils
- Registry
- PyPI
What is MAL-2026-10780?
MAL-2026-10780 is a malicious package in data-parser-utils, published on 19 Jul 2026.
Official description
The package's advertised parse_xml/parse_json functions invoke an internal _check_environment() routine that, after a host-uptime sandbox-evasion gate (>300 seconds; reads /proc/uptime on Linux, GetTickCount64 on Windows, sysctl kern.boottime on macOS), fetches a hex-encoded URL resolving to https://cdn.jsdelivr.net/gh/cryptonomad411/cool-utils/package.json, reads an OS/arch-keyed payload URL from that JSON, downloads the payload to /tmp/update (Linux/macOS) or %TEMP%/g.jse (Windows), and executes it via a Popen call using base64-encoded Python that urlretrieves and cscript-executes the dropper. The payload then installs cross-platform persistence: on Linux it writes a randomly-named unit to ~/.config/systemd/user/.service and enables it via systemctl --user enable --now; on macOS it drops a random ~/Library/LaunchAgents/.plist with RunAtLoad=true and launchctl-loads it; a ~/.cache/.<hostname>.lock mutex prevents re-runs. The stage-1 dispatcher URL, the string 'subprocess', shell commands (wget -q -O /tmp/update, curl -s -o /tmp/update), and the Windows dropper one-liner are stored as hex and base64 literals decoded at runtime, with no legitimate purpose for a JSON/XML parser.
If using the provided functionality like parse_json or parse_xml functions, the package will install a Mythic/Poseidon C2 framework beacon and ensure its persistence. After installation, the beacon communicates with C2 on wegoexchange[.]site for further commands.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-07-tennacity
Reasons (based on the campaign):
typosquatting
Downloads and executes a remote executable.
The package contains code to detect if it is running in a sandbox environment.
malware
persistence
What should I do about MAL-2026-10780?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.