MAL-2026-17755
Vulnerability from ossf_malicious_packages
Published
2026-10-10 11:19
Modified
2026-10-15 09:21
Summary
Malicious code in agent-vx (PyPI)
Details

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

Source: amazon-inspector (90f0a2b273b0361ffd4057f114f1be1eaf9469c9746d2737a21947905570ff80)

On import agentaix, the package's init.py runs a top-level install_manage() side effect that renames a bundled readme.txt into manage.py and launches it with pythonw.exe using CREATE_NO_WINDOW so no console appears. The disguised script registers the installer as username@hostname with https://googleforum.pythonanywhere.com and then polls that endpoint for commands. The command handlers include exec (arbitrary shell via subprocess.run(command, shell=True)), plus list, download, upload, delete, rename, and open — a full remote-controlled shell and file manager driven by a hardcoded author endpoint, with no authentication beyond the username@hostname identifier. The download handler reads any path accessible to the user process, base64-encodes the contents, and POSTs them back to https://googleforum.pythonanywhere.com/api/client//result, enabling remote-triggered exfiltration of arbitrary files. For persistence, _add_to_startup writes an AgentAIXManage value under HKCU\Software\Microsoft\Windows\CurrentVersion\Run pointing at pythonw.exe plus the renamed script so the C2 client auto-starts at every user login. The payload fires the moment the module is imported, with no user interaction, and the readme.txt disguise plus hidden-window launch are deliberate evasion of casual inspection.

Source: kam193 (f91699ff915dd2020b9736052f7036ee723aaaa0628e5384ff47f65577d397f6)

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.

CWE
  • CWE-506 - The product contains code that appears to be malicious in nature.

{
  "affected": [
    {
      "database_specific": {
        "cwes": [
          {
            "cweId": "CWE-506",
            "description": "The product contains code that appears to be malicious in nature.",
            "name": "Embedded Malicious Code"
          }
        ],
        "indicators": {
          "evidence_files": [
            {
              "path": "src/agentaix/__init__.py",
              "sha256": "4dee138d77c1b30b2d373f5619eca47976fe440876f02d3f9d7fe9fea5f5190e",
              "tlsh": "26515346de1f9422c673c24f1811d467e32703839ed16516bcfd86b07f7607ac4a09ae"
            },
            {
              "path": "src/agentaix/readme.txt",
              "sha256": "45b2f442c3133d3494511eff3b8ea249bb05418a57c4db7c827916588d11eff0",
              "tlsh": "17021262dc8e646383b2b50cc424c561f69a1343e6165c17f9fc87a87f74732e2b16ae"
            }
          ],
          "package_integrity": [
            {
              "filename": "agent_vx-0.1.0-py3-none-any.whl",
              "hashes": {
                "blake2b_256": "516b2aaad1364caabe900bab9bcc2ff523224d87e07dc72cb035adfecd126c2d",
                "md5": "31574817a40037ae5afb5fb310bd787a",
                "sha256": "77f9f614ce2e05999bd7c2bac84a4904ca0d166a92c6b826c72f64983bc9e739"
              }
            },
            {
              "filename": "agent_vx-0.1.0.tar.gz",
              "hashes": {
                "blake2b_256": "712a5a0870166af24e12b3ec433b6af10cd01af2d5661cbca7e45d0491fcd53c",
                "md5": "95c1523b00361ff3002d0b760603401e",
                "sha256": "b889a165d8bfb7990e43be3b632ef407a6317c0693e7122e7feb962ed5a87387"
              }
            }
          ]
        }
      },
      "package": {
        "ecosystem": "PyPI",
        "name": "agent-vx"
      },
      "versions": [
        "0.1.0"
      ]
    }
  ],
  "credits": [
    {
      "contact": [
        "inspector-research@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    },
    {
      "contact": [
        "https://github.com/kam193",
        "https://bad-packages.kam193.eu/"
      ],
      "name": "Kamil Ma\u0144kowski (kam193)",
      "type": "REPORTER"
    }
  ],
  "database_specific": {
    "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/agent-vx",
        "import_time": "2026-10-10T11:40:44.043018514Z",
        "modified_time": "2026-10-10T11:19:48.191346Z",
        "sha256": "815c9aad02259785c1e8b8569c0aead4598c1ea8f4802463a8db7f7240410296",
        "source": "kam193",
        "versions": [
          "0.1.0"
        ]
      },
      {
        "id": "IN-MAL-2026-021346",
        "import_time": "2026-10-11T14:17:57.970283446Z",
        "modified_time": "2026-10-11T13:45:22Z",
        "sha256": "90f0a2b273b0361ffd4057f114f1be1eaf9469c9746d2737a21947905570ff80",
        "source": "amazon-inspector",
        "versions": [
          "0.1.0"
        ]
      },
      {
        "id": "pypi/2026-10-agentaix/agent-vx",
        "import_time": "2026-10-15T09:20:03.529579325Z",
        "modified_time": "2026-10-10T11:19:48.191346Z",
        "sha256": "f91699ff915dd2020b9736052f7036ee723aaaa0628e5384ff47f65577d397f6",
        "source": "kam193",
        "versions": [
          "0.1.0"
        ]
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (90f0a2b273b0361ffd4057f114f1be1eaf9469c9746d2737a21947905570ff80)\nOn `import agentaix`, the package\u0027s __init__.py runs a top-level `install_manage()` side effect that renames a bundled `readme.txt` into `manage.py` and launches it with pythonw.exe using CREATE_NO_WINDOW so no console appears. The disguised script registers the installer as `username@hostname` with https://googleforum.pythonanywhere.com and then polls that endpoint for commands. The command handlers include `exec` (arbitrary shell via `subprocess.run(command, shell=True)`), plus list, download, upload, delete, rename, and open \u2014 a full remote-controlled shell and file manager driven by a hardcoded author endpoint, with no authentication beyond the username@hostname identifier. The `download` handler reads any path accessible to the user process, base64-encodes the contents, and POSTs them back to https://googleforum.pythonanywhere.com/api/client/\u003cid\u003e/result, enabling remote-triggered exfiltration of arbitrary files. For persistence, `_add_to_startup` writes an `AgentAIXManage` value under HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run pointing at pythonw.exe plus the renamed script so the C2 client auto-starts at every user login. The payload fires the moment the module is imported, with no user interaction, and the readme.txt disguise plus hidden-window launch are deliberate evasion of casual inspection.\n\n## Source: kam193 (f91699ff915dd2020b9736052f7036ee723aaaa0628e5384ff47f65577d397f6)\nThe package installs a persistent job that allows the attacker for exfiltrating files and executing remote code on the victim\u0027s machine.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-10-agentaix\n\n\nReasons (based on the campaign):\n\n\n - files-exfiltration\n\n\n - peristence-autorun\n\n\n - The package contains code to execute remote commands (probably limited to a specific set) on the victim\u0027s machine.\n\n\n - rat\n\n\n - persistence\n\n\n - Downloads and executes a remote malicious script.\n",
  "id": "MAL-2026-17755",
  "modified": "2026-10-15T09:21:47.904309773Z",
  "published": "2026-10-10T11:19:48Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://bad-packages.kam193.eu/pypi/package/agent-vx"
    },
    {
      "type": "PACKAGE",
      "url": "https://pypi.org/project/agent-vx/0.1.0/"
    }
  ],
  "schema_version": "1.7.4",
  "summary": "Malicious code in agent-vx (PyPI)"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.