Importing py-worm's agentaix module downloads a mutable Python file from https://raw.githubusercontent.com/anonrider404/pypl/refs/heads/main/readme.txt to a temporary .py file and launches it without a visible console on Windows. Versions 0.1.0 and 2.0.0 do this directly during import; version 2.0.1 starts a daemon thread during import to perform the same action. The package's CLI and GUI entry points import this module. The remote file's Git history contains a Windows remote file management client that registers persistence through an HKCU Run entry, polls https://googleforum.pythonanywhere.com for commands, and supports file upload, download, deletion, and command execution. An earlier remote-file revision is byte-identical to the readme.txt payload reported in MAL-2026-17752 (agentaix); the 39,931-byte agentaix/gui.py is also byte-identical across that package and all py-worm releases. The remote file is mutable; its contents at the time of any particular victim import and actual execution on victim systems have not been established.
-= Per source details. Do not edit below this line.=-
The package name 'py-worm' is suggestive of self-propagation behavior, but no a static rule fired and no traced code behavior was captured for this version. Without concrete evidence of credential harvest, outbound exfiltration, install-time code execution, or publish-token enumeration in the shipped files, the package cannot be classified as a confirmed supply-chain attack from the available signals alone.
The package installs a persistent job that allows the attacker for exfiltrating files and executing remote code on the victim's machine.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-10-agentaix
Reasons (based on the campaign):
files-exfiltration
peristence-autorun
The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.
rat
persistence
Downloads and executes a remote malicious script.
{
"iocs": {
"domains": [
"googleforum.pythonanywhere.com"
],
"urls": [
"https://raw.githubusercontent.com/anonrider404/pypl/9395c5802b11bc088925d7adf6e2f66b8b0709fd/readme.txt",
"https://raw.githubusercontent.com/anonrider404/pypl/refs/heads/main/readme.txt",
"https://github.com/anonrider404/pypl"
]
},
"malicious-packages-origins": [
{
"id": "pypi/2026-10-agentaix/py-worm",
"import_time": "2026-10-15T09:20:03.534680188Z",
"modified_time": "2026-10-15T08:29:24.603564Z",
"sha256": "d4c5838f30da7c1f684305ec0704ef37e963793449390f5b13a4e06212ccbd9d",
"source": "kam193",
"versions": [
"0.1.0",
"2.0.0",
"2.0.1"
]
},
{
"id": "IN-MAL-2026-022052",
"import_time": "2026-10-29T14:14:21.283339964Z",
"modified_time": "2026-10-29T13:42:33Z",
"sha256": "8fd8563e18894311d651012477647efc1a169f465a9cf89db5e7245b0b6ffcc9",
"source": "amazon-inspector",
"versions": [
"2.0.0"
]
}
]
}[
{
"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"
}
]
{
"package_integrity": [
{
"filename": "py_worm-2.0.0-py3-none-any.whl",
"hashes": {
"blake2b_256": "176f0efd0b9c049435a2f610272b7630d451621ba6676ae66afe3e719a158476",
"md5": "452882a3c6d531240df37d6c5ec8aea5",
"sha256": "426d98c8403c066a955575c414f0941042c31dd11791fe73a0db68a09f644029"
}
},
{
"filename": "py_worm-2.0.0.tar.gz",
"hashes": {
"blake2b_256": "3206949afef96592fbf7d9bd45cae614803adf907b31dbb2c36c043a2404fe8a",
"md5": "3f94d0bb739a9be48ffdb7e436921f4b",
"sha256": "cace83399e5a2523a88be4e07a1fd211def3f2f9e5040693539ff1356806aa02"
}
}
]
}
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/py-worm/MAL-2026-17883.json"