MAL-2026-17927Critical▾ Abyssal⚠ Exploited in the wildMalicious code in fabtoolkit (PyPI)
▾ Abyssal zone — Critical with a public exploit or in-the-wild use
impact 52.3 · likelihood 0 · exploitation 18
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
-= Per source details. Do not edit below this line.=-
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.
fabtoolkitRefer to the advisory for the patched release.