{ "modified": "2026-10-19T02:29:22Z", "published": "2026-10-19T02:26:31Z", "schema_version": "1.7.4", "id": "MAL-2026-17927", "summary": "Malicious code in fabtoolkit (PyPI)", "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (e55333b9d934a04c029943e0e6fbf34fff7c1344e0d1964b6860bc02d322855d)\nfabtoolkit 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.\n", "affected": [ { "package": { "ecosystem": "PyPI", "name": "fabtoolkit" }, "versions": [ "0.1.2", "0.1.1", "0.1.0" ], "database_specific": { "cwes": [ { "cweId": "CWE-506", "description": "The product contains code that appears to be malicious in nature.", "name": "Embedded Malicious Code" }, { "cweId": "CWE-506", "description": "The product contains code that appears to be malicious in nature.", "name": "Embedded Malicious Code" }, { "cweId": "CWE-506", "description": "The product contains code that appears to be malicious in nature.", "name": "Embedded Malicious Code" } ], "indicators": { "evidence_files": [ { "path": "fabtoolkit/__init__.py", "sha256": "518954224d7879e904b0f7fa669c0f7463e7ea0269ed7f0ed50681178bfce0f5", "tlsh": "09e18322981a3472d283e53cac31c9557b56be1b910398717edc9b645fc84b7c0b27ba" } ], "package_integrity": [ { "filename": "fabtoolkit-0.1.2-py3-none-any.whl", "hashes": { "blake2b_256": "2fec5b2c219bcc8605baf68810edf70577716b20d81e4457a0229ae993b2b6ba", "md5": "f6b79c593a351f3e8c9a9a88aedf0de8", "sha256": "1e527bdf3345ce4e7e24091205ef6c84a06508bf5bf83c7bdec48d26b7522b2b" } } ] } } } ], "references": [ { "type": "PACKAGE", "url": "https://pypi.org/project/fabtoolkit/0.1.2/" }, { "type": "PACKAGE", "url": "https://pypi.org/project/fabtoolkit/0.1.1/" }, { "type": "PACKAGE", "url": "https://pypi.org/project/fabtoolkit/0.1.0/" } ], "credits": [ { "name": "Amazon Inspector", "type": "FINDER", "contact": [ "inspector-research@amazon.com" ] } ], "database_specific": { "malicious-packages-origins": [ { "id": "IN-MAL-2026-021526", "import_time": "2026-10-19T02:27:23.818284981Z", "modified_time": "2026-10-19T02:26:57Z", "sha256": "567b18257d1e8a385129705e40ad51484d1a86491c08c37d8bf192965273cb7b", "source": "amazon-inspector", "versions": [ "0.1.2" ] }, { "id": "IN-MAL-2026-021523", "import_time": "2026-10-19T02:27:23.723807383Z", "modified_time": "2026-10-19T02:26:31Z", "sha256": "7d579abeba93f8d9fe48b53f95a1ba8e45fb4630f19269aca4c5a9149c4bf6cd", "source": "amazon-inspector", "versions": [ "0.1.1" ] }, { "id": "IN-MAL-2026-021525", "import_time": "2026-10-19T02:27:23.784650522Z", "modified_time": "2026-10-19T02:26:46Z", "sha256": "e55333b9d934a04c029943e0e6fbf34fff7c1344e0d1964b6860bc02d322855d", "source": "amazon-inspector", "versions": [ "0.1.0" ] } ] } }