{"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","modified":"2026-10-19T02:30:03.430743589Z","published":"2026-10-19T02:26:31Z","database_specific":{"malicious-packages-origins":[{"versions":["0.1.2"],"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"},{"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"]},{"source":"amazon-inspector","versions":["0.1.0"],"id":"IN-MAL-2026-021525","import_time":"2026-10-19T02:27:23.784650522Z","modified_time":"2026-10-19T02:26:46Z","sha256":"e55333b9d934a04c029943e0e6fbf34fff7c1344e0d1964b6860bc02d322855d"}]},"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/"}],"affected":[{"package":{"name":"fabtoolkit","ecosystem":"PyPI","purl":"pkg:pypi/fabtoolkit"},"versions":["0.1.2","0.1.1","0.1.0"],"database_specific":{"indicators":{"evidence_files":[{"tlsh":"09e18322981a3472d283e53cac31c9557b56be1b910398717edc9b645fc84b7c0b27ba","path":"fabtoolkit/__init__.py","sha256":"518954224d7879e904b0f7fa669c0f7463e7ea0269ed7f0ed50681178bfce0f5"}],"package_integrity":[{"hashes":{"sha256":"1e527bdf3345ce4e7e24091205ef6c84a06508bf5bf83c7bdec48d26b7522b2b","blake2b_256":"2fec5b2c219bcc8605baf68810edf70577716b20d81e4457a0229ae993b2b6ba","md5":"f6b79c593a351f3e8c9a9a88aedf0de8"},"filename":"fabtoolkit-0.1.2-py3-none-any.whl"}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/fabtoolkit/MAL-2026-17927.json","cwes":[{"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","cweId":"CWE-506"}]}}],"schema_version":"1.9.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}