MAL-2025-191535

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/tableate/MAL-2025-191535.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2025-191535
Published
2025-11-25T11:06:37Z
Modified
2026-03-19T12:57:14.884097Z
Summary
Malicious code in tableate (PyPI)
Details

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

Source: google-open-source-security (762292d92c617c287b3c6b54f7c4a8b8630e7dd893b40dd05bade462fec7ca26)

This package is malicious and typosquating the legitimate pyspellchecker library. This package will deploy a remote-access trojan that allows the attacker full control of the victim's host.

Source: kam193 (d88deb1f1ae46e472c6b11ee1f67a1625ed092c81dc62ce54491c775e719748e)

Packages contain hidden code that is effectively run during importing or using the library, and downloads second stage code. Then, a process running in background periodically connects to a remote host and waits for next code to execute


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

Campaign: 2025-11-spellcheckers

Reasons (based on the campaign):

  • obfuscation

  • Downloads and executes a remote malicious script.

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

Database specific
{
    "malicious-packages-origins": [
        {
            "import_time": "2025-12-02T00:36:18.917048Z",
            "modified_time": "2025-12-02T00:36:12Z",
            "sha256": "762292d92c617c287b3c6b54f7c4a8b8630e7dd893b40dd05bade462fec7ca26",
            "source": "google-open-source-security",
            "ranges": [
                {
                    "events": [
                        {
                            "introduced": "0"
                        }
                    ],
                    "type": "ECOSYSTEM"
                }
            ],
            "versions": [
                "0.0.1"
            ]
        },
        {
            "import_time": "2025-12-02T22:30:55.62521246Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "5a061ea6461d72dd4412a53643337c4fef3e02cd7ff7670385def8862e016d22",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2025-12-02T23:07:18.666216152Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "d88deb1f1ae46e472c6b11ee1f67a1625ed092c81dc62ce54491c775e719748e",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2025-12-24T10:07:31.475321834Z",
            "modified_time": "2025-12-23T08:39:54Z",
            "sha256": "09a52dbb7e108b87d36611108fc40cac494849bc6b2e5d01a044e0a2036092e5",
            "source": "reversing-labs",
            "versions": [
                "0.0.1"
            ],
            "id": "RLMA-2025-06594"
        },
        {
            "import_time": "2026-01-20T19:58:56.114282547Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "237281e790d2b288d215f0f5348ad12e77778337a2bef961dd547ae72af43645",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2026-01-27T18:48:13.391465092Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "93febccbf215593704410837cdce5accdad3866b188e7e8bc7884701cf8669ef",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2026-01-28T19:11:43.702142511Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "8d9cb1b34ddf007424089853bea04792d4d0c8fa4008859a035cc5bb6c057641",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2026-03-11T10:47:48.530085869Z",
            "modified_time": "2025-11-25T11:06:37.753983Z",
            "sha256": "e44c807b69204fc9bbe2f12cf1c547e8ef529850cad7d9db547711c4811c68b7",
            "source": "kam193",
            "versions": [
                "0.0.1"
            ],
            "id": "pypi/2025-11-spellcheckers/tableate"
        },
        {
            "import_time": "2026-03-19T12:20:31.797676149Z",
            "modified_time": "2026-03-18T12:19:16Z",
            "sha256": "83f253533a75a18c59fc46da473216b199b92863376628c3311710d3fe55686e",
            "source": "reversing-labs",
            "id": "RLUA-2026-00800"
        }
    ],
    "iocs": {
        "domains": [
            "dothebest.store"
        ],
        "urls": [
            "dothebest.store/allow/inform.php",
            "dothebest.store/refresh.php"
        ]
    }
}
References
Credits

Affected packages

PyPI / tableate

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected

Affected versions

0.*
0.0.1

Database specific

source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/tableate/MAL-2025-191535.json"