Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

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.

ShareXLinkedInHacker News
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

  1. 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.

  1. 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
  2. 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
  3. 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
  4. 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