Malicious code in beautifytext (PyPI)
beautifytext 1.0.3 imports beautifyText/_compat.py from its __init__.py and from a setup.py install hook. That module starts a detached background process that registers the host (hostname, user, OS, working directory) with https://bleodw.wisp.uno, then polls it for jobs to run shell commands or read and write files, and posts the results back. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (488a492f2e87fa16d545c2605cb1ca4eb18c5e912a8e1645248e7ababafc10f8) beautifyText 1.0.3 is a backdoor disguised as a text utility. On `import beautifyText`, the package spawns a detached background Python process (via a module named `_compat`) that decodes a base64-obfuscated C2 URL (https://bleodw.wisp.uno) and enters a long-poll loop against `/work/{id}`. The command channel implements three job kinds: `exec` runs arbitrary shell commands via subprocess with `shell=True`, `pull` reads arbitrary files from the installer's host, and `push` writes arbitrary files to the installer's host, with results POSTed back to `/result`. On registration, host metadata (hostname, OS/release, Python version, USER/USERNAME, current working directory) is sent to `/register`, and `/heartbeat` maintains the session. setup.py installs an `install` and `develop` cmdclass override whose `run()` calls `_post_install()`, which imports `beautifyText._compat` and triggers the same beacon during `pip install`, so the backdoor activates on install even without a subsequent impor
- Products
- beautifytext
- Affected versions
- 1.0.3, 1.0.4, 1.0.7
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 28 Oct 2026, 10:04 UTC · Revision 1
Source evidence
beautifytext 1.0.3 imports beautifyText/_compat.py from its __init__.py and from a setup.py install hook. That module starts a detached background process that registers the host (hostname, user, OS, working directory) with https://bleodw.wisp.uno, then polls it for jobs to run shell commands or read and write files, and posts the results back. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (488a492f2e87fa16d545c2605cb1ca4eb18c5e912a8e1645248e7ababafc10f8) beautifyText 1.0.3 is a backdoor disguised as a text utility. On `import beautifyText`, the package spawns a detached background Python process (via a module named `_compat`) that decodes a base64-obfuscated C2 URL (https://bleodw.wisp.uno) and enters a long-poll loop against `/work/{id}`. The command channel implements three job kinds: `exec` runs arbitrary shell commands via subprocess with `shell=True`, `pull` reads arbitrary files from the installer's host, and `push` writes arbitrary files to the installer's host, with results POSTed back to `/result`. On registration, host metadata (hostname, OS/release, Python version, USER/USERNAME, current working directory) is sent to `/register`, and `/heartbeat` maintains the session. setup.py installs an `install` and `develop` cmdclass override whose `run()` calls `_post_install()`, which imports `beautifyText._compat` and triggers the same beacon during `pip install`, so the backdoor activates on install even without a subsequent impor
osv:MAL-2026-17417
beautifytext
Fixed versions: Not specified
Complete source record
{
"id": "c9d2f1a0d7dea9928b6b18fabbc96017149f234d194c0ab2f4c26dd23441145b",
"url": "https://osv.dev/vulnerability/MAL-2026-17417",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in beautifytext (PyPI)",
"summary": "beautifytext 1.0.3 imports beautifyText/_compat.py from its __init__.py and from a setup.py install hook. That module starts a detached background process that registers the host (hostname, user, OS, working directory) with https://bleodw.wisp.uno, then polls it for jobs to run shell commands or read and write files, and posts the results back. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (488a492f2e87fa16d545c2605cb1ca4eb18c5e912a8e1645248e7ababafc10f8) beautifyText 1.0.3 is a backdoor disguised as a text utility. On `import beautifyText`, the package spawns a detached background Python process (via a module named `_compat`) that decodes a base64-obfuscated C2 URL (https://bleodw.wisp.uno) and enters a long-poll loop against `/work/{id}`. The command channel implements three job kinds: `exec` runs arbitrary shell commands via subprocess with `shell=True`, `pull` reads arbitrary files from the installer's host, and `push` writes arbitrary files to the installer's host, with results POSTed back to `/result`. On registration, host metadata (hostname, OS/release, Python version, USER/USERNAME, current working directory) is sent to `/register`, and `/heartbeat` maintains the session. setup.py installs an `install` and `develop` cmdclass override whose `run()` calls `_post_install()`, which imports `beautifyText._compat` and triggers the same beacon during `pip install`, so the backdoor activates on install even without a subsequent impor",
"evidence": "osv:MAL-2026-17417",
"products": [
{
"name": {
"value": "beautifytext",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.0.3",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.4",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.7",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-17417",
"aliases": [
"MAL-2026-17417"
],
"affected": [
{
"package": {
"name": "beautifytext",
"purl": "pkg:pypi/beautifytext",
"ecosystem": "PyPI"
},
"versions": [
"1.0.3",
"1.0.4",
"1.0.7"
],
"database_specific": {
"cwes": [
{
"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."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/beautifytext/MAL-2026-17417.json",
"indicators": {
"evidence_files": [
{
"path": "beautifyText/_compat.py",
"tlsh": "72e141b0f95868b2f3a2e16d4454906513aebd077a4669b0be4cb2682fdd039c0f41fd",
"sha256": "0e0e68803dbe0578c687d27da0883df9e4780137646d76f3580761809c387957"
},
{
"path": "setup.py",
"tlsh": "6c01bdc2d8652838b84293d806d350e69b32a913bdb0b7ad36df431a1fc706686561af",
"sha256": "2ed1c51398722e453a3dcbea3363df4e43b25e0d24cfa81632f1d3b5ff55298e"
}
],
"package_integrity": [
{
"hashes": {
"md5": "bbce880b0a1a28095af50ac5357951bb",
"sha256": "352a26be5f89efb4eeeb57d7a477532d36224f9d70761128c69c78402707adf7",
"blake2b_256": "e742ee91a51d346c70c0bd3c91e6d3d0981a1d865d65b4f8a9b527c4c642239e"
},
"filename": "beautifytext-1.0.4-py3-none-any.whl"
},
{
"hashes": {
"md5": "dcccae916ea174abd5bfaaed5246bcef",
"sha256": "bcaf10dfc114d1ca540bc3a0add97844448ab94a01570004d33e6f0de4df459f",
"blake2b_256": "88592bbcf82766552ccc68ffab2970c24b421f63140614fa75f389700ddf4476"
},
"filename": "beautifytext-1.0.4.tar.gz"
}
]
}
}
}
],
"modified": "2026-10-08T20:30:04.756076783Z",
"provider": "osv",
"references": [
"https://bad-packages.kam193.eu/pypi/package/beautifytext",
"https://pypi.org/project/beautifyText/1.0.4/",
"https://pypi.org/project/beautifyText/1.0.7/",
"https://pypi.org/project/beautifyText/1.0.3/"
],
"provider_metadata": {
"iocs": {
"urls": [
"https://bleodw.wisp.uno"
],
"domains": [
"bleood.wisp.uno"
]
},
"malicious-packages-origins": [
{
"id": "pypi/2026-07-beautifytext/beautifytext",
"sha256": "cba19cfc0b2bdeec177fafdffa10e730769079a14ece3bb4740bfc0ded9fef3b",
"source": "kam193",
"versions": [
"1.0.3",
"1.0.4",
"1.0.7"
],
"import_time": "2026-09-30T19:40:14.775642175Z",
"modified_time": "2026-09-30T19:15:23.492694Z"
},
{
"id": "IN-MAL-2026-021229",
"sha256": "c8181de3b2eec9e345e33a0924b1387e4263dd4f1826618df002ac8376de9998",
"source": "amazon-inspector",
"versions": [
"1.0.4"
],
"import_time": "2026-10-08T20:20:20.144764993Z",
"modified_time": "2026-10-08T20:00:43Z"
},
{
"id": "IN-MAL-2026-021231",
"sha256": "0a59c3a7944769221a5478c3b40086b0855722f357780579b17087e609259b29",
"source": "amazon-inspector",
"versions": [
"1.0.7"
],
"import_time": "2026-10-08T20:20:20.240491162Z",
"modified_time": "2026-10-08T20:01:04Z"
},
{
"id": "IN-MAL-2026-021230",
"sha256": "488a492f2e87fa16d545c2605cb1ca4eb18c5e912a8e1645248e7ababafc10f8",
"source": "amazon-inspector",
"versions": [
"1.0.3"
],
"import_time": "2026-10-08T20:20:20.201958844Z",
"modified_time": "2026-10-08T20:00:52Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 104577,
"published_at": "2026-09-30T11:47:45+00:00"
}