MAL-2026-17927 Malicious code in fabtoolkit (PyPI)
Malicious package
Published
MAL-2026-17927 is a malicious package: fabtoolkit (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-17927/ (Markdown: https://insights.sbomify.com/MAL-2026-17927/index.md)
- Package
- fabtoolkit
- Registry
- PyPI
What is MAL-2026-17927?
MAL-2026-17927 is a malicious package in fabtoolkit, published on 19 Oct 2026.
Official description
fabtoolkit executes a payload (embedded as a CHILD string run via
subprocess.run([sys.executable,'-I','-c',CHILD],...)) that fetches a JSON config from https://transfer.archivete.am/H2Uxm/fabdeploycheck-config.json with TLS verification disabled (ssl._create_unverified_context()) and dispatches on config-supplied kind values: file reads arbitrary filesystem paths, run executes attacker-supplied argv via subprocess, http issues attacker-chosen requests with Bearer tokens chained from previously-read files, tcp probes ports, and revsh forks a daemon that polls base+'/'+ident+'-cmd.txt' and pipes the returned bytes into /bin/sh -c, PUTting stdout/stderr back to the same host. Collected file contents, command output, HTTP responses, and probe results are packed into an in-memory zip and PUT to transfer.archivete.am under an attacker-chosen report name. Before daemonizing, the payload walks /proc/*/cmdline and SIGKILLs processes whose cmdlines contain FABDRV3, fabdrv2, or connection ready, enforcing single-instance persistence and clearing prior variants. The entry points python -m fabtoolkit and any import path reaching selftest()/check() trigger the payload. The destination is an anonymous public file-transfer host; config-controlled file reads enable harvesting of credentials such as ~/.aws/credentials and ~/.ssh/* along with cloud metadata via the http kind. The package has no legitimate functionality matching its naming.What should I do about MAL-2026-17927?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.