pypi · Malicious package advisory
Malwareexecutor-http
GHSA-f9hv-x7xr-gpj9
Malicious code in executor-http (PyPI)
Details
**Severity:** Critical
**Affected versions:** `= 0.1.3`
## Source: amazon-inspector (cde4da7201fbc0dd3ae09240232f5767c2893e33977d6c8ee9071d15e79f0363)
The package ships `executor_http-setup.pth`, which Python auto-loads at interpreter start for any environment where the package is installed. The.pth file calls `exec()` on an obfuscated single-line string (mangled one-letter underscore identifiers like `_O`, `_T`, `_G`, `_u`, `_s`, `_b`, `_z`) that downloads `https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/bun-{platform}-{arch}.zip` to `/tmp/b/bun`, chmods it executable, then runs `subprocess.run([bun, 'run', _index.js])` to execute a sibling JavaScript file under the Bun runtime. A `/tmp/.bun_ran` sentinel suppresses re-execution. The advertised purpose of executor-http is a FastAPI/uvicorn HTTP server for executor-engine — there is no legitimate reason for it to fetch a JavaScript runtime and execute JS code outside of Python's view. The legitimate FastAPI source under `executor/http/` appears unmodified, and the distribution metadata is inconsistent (`__init__.py` reports 0.1.2, METADATA says 0.1.3, RECORD references `executor_http-0.1.2.dist-info`), consistent with a hijacked publish-credential adding a dropper to an otherwise normal upstream release. The.pth-based auto-execution mechanism is itself an evasion technique that bypasses review of `__init__.py` and lifecycle hooks, and the alternate-runtime stage (Bun executing `_index.js`) places the actual payload outside any Python static analysis surface.
## Source: kam193 (4396c593615517f1abf374bf3621ad44a9d0b5c540aaf8c8e101cd4954f7d7be)
Versions 0.1.3, 0.1.4 were compromised.
Compromised packages start an obfuscated infostealer. The infostealer is a heavily obfuscated JavaScript code executed using Bun runtime on Python startup. It collectes all kinds of sensitive data, including API keys, credentials to package repositories, cryptocurrency assets, password manager data. Infostealer actively queries online services to collect additional secrets as well as attempts to gain persistence and spread […]
**References:**
- https://bad-packages.kam193.eu/pypi/campaign/2026-06-compr-woodpecker
- https://github.com/ossf/malicious-packages/blob/49d0cfba3689ed9b195d101d3a2a964c6a77f767/osv/malicious/pypi/executor-http/MAL-2026-5281.json
- https://o3.security/blog/pypi-supply-chain-attack-pth-file-miasma
- https://pypi.org/project/executor-http/0.1.3
- https://socket.dev/blog/mini-shai-hulud-campaign-hits-red-hat-cloud-services-npm-packages
- https://socket.dev/blog/mini-shai-hulud-miasma-and-hades-worms-target-bioinformatics-and-mcp-developers-via-malicious
- https://socket.dev/blog/shai-hulud-descends-to-hades-miasma-pypi-wave
- https://github.com/advisories/GHSA-f9hv-x7xr-gpj9Compromised versions (1)
- = 0.1.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.