Malicious code in acme-widget-layout-utils (PyPI)
The PyPI package acme-widget-layout-utils contained malicious code that executes a reverse shell on import. The package was published under a generic name despite being described internally as a 'pipeline hook probe', increasing the risk of accidental installation.
- Disclosed
- Last updated
- Blast radius
- Any Python environment that imports acme-widget-layout-utils; reverse shell execution with importing process privileges.
- Ecosystems
- Attack vectors
- Affected entities
- acme-widget-layout-utilsPyPI package containing reverse shell code in __init__.py
The PyPI package acme-widget-layout-utils contained embedded reverse-shell code in src/acme_widget_layout_utils/__init__.py. Upon import, the code opens a TCP socket, duplicates the socket file descriptor to stdin/stdout/stderr via os.dup2(), and executes /bin/sh -i to spawn an interactive shell.\n\nThe hardcoded destination address is 127.0.0.1:1, which is intentionally unreachable in default environments. However, the code is fully functional—any environment with a listener on that endpoint, loopback proxying, or connection redirection would grant an attacker an interactive shell with the importing process's privileges.\n\nThe package also writes a marker file /tmp/pypi_install_hook_marker.txt during pip install via a custom setup.py install cmdclass. The package was published under the generic name widget-layout-utils despite its internal description identifying it as a 'pipeline hook probe' with no advertised utility, increasing the likelihood of accidental installation.\n\nShipping live reverse-shell code on public PyPI under a benign name constitutes a critical supply chain risk regardless of any stated 'security probe' intent by the author.
Indicators of compromise
- Packages
- acme-widget-layout-utils
Remediation
- Immediately uninstall acme-widget-layout-utils from all environments: `pip uninstall acme-widget-layout-utils`
- Audit all systems where this package was installed for unauthorized shell access or persistence mechanisms
- Review process logs and network connections from the time of installation
- Rotate credentials and SSH keys on affected systems
- Monitor for indicators of compromise (reverse shell connections, marker file presence at /tmp/pypi_install_hook_marker.txt)
- Implement package pinning and allowlisting policies to prevent installation of unknown or suspicious packages
- Use dependency scanning tools to detect this package in supply chains
Sources
- GitHub Advisory GHSA-ffgh-wmmr-r7fq · GitHub Advisory Database
Cite this entry
"Malicious code in acme-widget-layout-utils (PyPI)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed July 21, 2026; last updated July 21, 2026. https://supplychainattack.org/incident/malicious-code-in-acme-widget-layout-utils-pypi-17w9x8
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in acloud-clients (PyPI)
A multi-year malicious campaign on PyPI distributes packages that clone legitimate cloud SDK libraries (acloud-clients, AWS clients) and inject code to exfiltrate cloud credentials via hidden dependencies like time-check-server and snapshot-photo.
PyPICompromised packageMalicious commit - resolvedcritical
Malicious code in acloud-client (PyPI)
A multi-year malicious campaign on PyPI distributed packages (acloud-client, time-check-server, snapshot-photo) that clone legitimate cloud SDK packages and exfiltrate cloud credentials to remote servers. The campaign used obfuscation techniques, hiding malicious functionality in dependency chains.
PyPICompromised packageMalicious commit - resolvedcritical
Malicious code in zscaner (PyPI)
A coordinated malicious package campaign on PyPI targeting Telegram Desktop users. Five interdependent packages (zscaner, pyapiepo, reqinstall, zmaker, zsender) work together to locate, archive, and exfiltrate Telegram Desktop user data to a remote server.
PyPICompromised packageMalicious commit - containedcritical
Malicious code in xyq-drama-skill (PyPI)
xyq-drama-skill, a PyPI package, contained malicious code that downloads and executes an unsigned binary from a remote server during installation and on command invocation. The package masquerades as a Chinese short-video drama script generator but actually deploys what appears to be a COFFLoader beacon.
PyPICompromised packageMalicious commit