MAL-2026-3692 Malicious code in guan (PyPI)
Malicious package
Published
MAL-2026-3692 is a malicious package: guan (PyPI). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-3692/ (Markdown: https://insights.sbomify.com/MAL-2026-3692/index.md)
- Package
- guan
- Registry
- PyPI
What is MAL-2026-3692?
MAL-2026-3692 is a malicious package in guan, published on 12 May 2026.
Official description
The top-level
src/guan/__init__.py unconditionally calls statistics_of_guan_package() on every import guan. That function (in src/guan/others.py) opens a raw TCP socket to the hardcoded author-controlled endpoint socket.guanjihuan.com:12345 and sends a JSON payload containing the installer's MAC address (via uuid.getnode()), the guan package version, and timestamp. There is no opt-out, no documentation of this behavior in README/PKG-INFO, and no user consent. This constitutes silent collection of a stable hardware identifier from every machine that imports the package and transmits it to an author-controlled server — an installer-side data exfiltration pattern, not merely author-side self-harm. While the payload is narrow (MAC + version + time), MAC addresses are persistent hardware identifiers suitable for tracking, correlation, and deanonymization of developer/build machines.What should I do about MAL-2026-3692?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.