MAL-2026-10975

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/rasterkit-demo/MAL-2026-10975.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-10975
Published
2026-07-21T05:46:23Z
Modified
2026-08-04T23:05:47.133920467Z
Summary
Malicious code in rasterkit-demo (PyPI)
Details

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

Source: amazon-inspector (d748af7546aacbfca356759d4c81386f113a32dfc80ff8bb75da3eb3c8b4358d)

rasterkit-demo ships a CLI entry point (rasterkit-demo) whose run_demo() function imports demo_channel_windows from PIL._data and passes the returned buffer to exec(samples.decode('latin-1'), {'__name__': '__main__',...}) inside worker threads. PIL._data is not a real Pillow module; it is supplied by the rasterkit package that this demo declares as a required dependency, so the bytes being executed are chosen at runtime by the author-controlled rasterkit package rather than by Pillow. The surrounding functions (extract_windows, render_tiles, save_tiles) and the 'channel window / processing pipeline' docstrings provide imaging cover for what is arbitrary Python execution; the payload can be changed at will by publishing a new version of rasterkit without republishing this package. Running the advertised CLI therefore executes attacker-mutable code on the installer's machine under an image-processing cover story.

Source: kam193 (29eb6057bbc11a0f0180a030db952f9ec8aa39ce8c4b0d437046b20301f5b21a)

During import, the code uses steganography to extract code from an image hidden in the dependency. The code then adds a new authorized SSH key and reports back the IP of the current environment.


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

Campaign: 2026-06-textwrap-toolkit-stager

Reasons (based on the campaign):

  • backdoor

  • obfuscation

  • crypto-related

  • Downloads and executes a remote malicious script.

  • exfiltration-crypto

Database specific
{
    "iocs": {
        "ips": [
            "194.5.152.9"
        ],
        "urls": [
            "http://194.5.152.9:5555/report",
            "http://194.5.152.9:8080/hacks/textwrap-toolkit/textwrap_toolkit/__init__.py",
            "http://194.5.152.9:5555/tao"
        ]
    },
    "malicious-packages-origins": [
        {
            "versions": [
                "0.1.0"
            ],
            "source": "kam193",
            "id": "pypi/2026-06-textwrap-toolkit-stager/rasterkit-demo",
            "modified_time": "2026-07-21T05:46:23.232192Z",
            "import_time": "2026-07-21T07:23:25.392919797Z",
            "sha256": "29eb6057bbc11a0f0180a030db952f9ec8aa39ce8c4b0d437046b20301f5b21a"
        },
        {
            "versions": [
                "0.1.0"
            ],
            "source": "amazon-inspector",
            "sha256": "d748af7546aacbfca356759d4c81386f113a32dfc80ff8bb75da3eb3c8b4358d",
            "modified_time": "2026-08-04T21:57:59Z",
            "import_time": "2026-08-04T22:30:08.537886404Z",
            "id": "IN-MAL-2026-011276"
        }
    ]
}
References
Credits

Affected packages

PyPI / rasterkit-demo

Package

Affected ranges

Affected versions

0.*
0.1.0

Database specific

indicators
{
    "evidence_files": [
        {
            "tlsh": "8d616513e453d9d2c3f25a68478bb642221bea634a9a4030fe6d97a43f0c03bd0d55dc",
            "sha256": "7e2ae82ee0e0f77590542e4665780eba9b1ba557466b10cf0a5f50862fd15231",
            "path": "rasterkit_demo/__init__.py"
        }
    ],
    "package_integrity": [
        {
            "filename": "rasterkit_demo-0.1.0-py3-none-any.whl",
            "hashes": {
                "md5": "dbc04011dca84e13b00eddc13cfd9477",
                "sha256": "253e72504c7553c773d7edd46084048149ead59791c7a95ea3c0b458b57b9efd",
                "blake2b_256": "becbdb0ef7151ac3ce321a14721bde71299426a221dbd1ea4e6d4d097bda7687"
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/rasterkit-demo/MAL-2026-10975.json"
cwes
[
    {
        "name": "Embedded Malicious Code",
        "description": "The product contains code that appears to be malicious in nature.",
        "cweId": "CWE-506"
    }
]