MAL-2026-17927

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/fabtoolkit/MAL-2026-17927.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-17927
Published
2026-10-19T02:26:31Z
Modified
2026-11-08T00:45:09Z
Summary
Malicious code in fabtoolkit (PyPI)
Details

-= Per source details. Do not edit below this line.=-

Source: amazon-inspector (e55333b9d934a04c029943e0e6fbf34fff7c1344e0d1964b6860bc02d322855d)

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.

Source: kam193 (2bf19474223c7d4ca639f13835ca22395443b92a5418d226733dfe81b3a25d5e)

Package hides code that starts malicious actions: it downloads a C2 configuration and executes commands from it. It supports exfiltrating files, running commands, and starting a reverse shell.


Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-11-fabtoolkit

Reasons (based on the campaign):

  • The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.

  • exfiltration-generic

  • The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.

  • The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine.

Database specific
{
    "iocs": {
        "urls": [
            "https://transfer.archivete.am/H2Uxm/fabdeploycheck-config.json"
        ]
    },
    "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"
            ]
        },
        {
            "id": "IN-MAL-2026-021544",
            "import_time": "2026-10-20T18:46:13.402094306Z",
            "modified_time": "2026-10-20T18:45:02Z",
            "sha256": "31bca15e3f2b0d00803862409ca9abe10985158a994449d79348675aa632d76d",
            "source": "amazon-inspector",
            "versions": [
                "0.2.1"
            ]
        },
        {
            "id": "pypi/2026-11-fabtoolkit/fabtoolkit",
            "import_time": "2026-11-08T00:33:31.811952455Z",
            "modified_time": "2026-11-07T23:30:17.440645Z",
            "sha256": "2bf19474223c7d4ca639f13835ca22395443b92a5418d226733dfe81b3a25d5e",
            "source": "kam193",
            "versions": [
                "0.1.0",
                "0.1.1",
                "0.1.2",
                "0.2.0",
                "0.2.1"
            ]
        }
    ]
}
References
Credits

Affected packages

PyPI / fabtoolkit

Package

Name
fabtoolkit
View open source insights on deps.dev
Purl
pkg:pypi/fabtoolkit

Affected ranges

Affected versions

0.*
0.1.0
0.1.1
0.1.2
0.2.0
0.2.1

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"
    },
    {
        "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"
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/fabtoolkit/MAL-2026-17927.json"