Skip to content
Heist/ feed
Back to feed
Unrated

Malicious code in py2ops (PyPI)

Type: advisorySources: OSV

The package installs a console command named python2 (pyops.cli:main), so it runs when someone types python2. On first run _register() in cli.py POSTs the hostname and OS to a space-z.ai server and keeps the returned apiKey in ~/.python2/config.json. Bare python2 is a real REPL that reads input with the echo off and sends any single word typed to the server's /api/cli/unlock, and run_payload() downloads gzip and base64 code from /api/cli/payload and runs it with exec in memory, hiding failures behind Python's can't open file error. Comments in the file call this the cover. I did not see what the served code does. I read 2.2 and did not run it.

Products
py2ops
Affected versions
2.2
Fixed versions
Not specified
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 06:03 UTC · Revision 1

Source evidence

Malicious code in py2ops (PyPI)

core-osv · Original source

Published 9 Oct 2026, 16:02 UTC

The package installs a console command named python2 (pyops.cli:main), so it runs when someone types python2. On first run _register() in cli.py POSTs the hostname and OS to a space-z.ai server and keeps the returned apiKey in ~/.python2/config.json. Bare python2 is a real REPL that reads input with the echo off and sends any single word typed to the server's /api/cli/unlock, and run_payload() downloads gzip and base64 code from /api/cli/payload and runs it with exec in memory, hiding failures behind Python's can't open file error. Comments in the file call this the cover. I did not see what the served code does. I read 2.2 and did not run it.

osv:MAL-2026-17807

py2ops

Fixed versions: Not specified

Complete source record
{
  "id": "caac5ad0807d7c63daddea8ca383c253884776478e8c869b24f7cf240d18482c",
  "url": "https://osv.dev/vulnerability/MAL-2026-17807",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Malicious code in py2ops (PyPI)",
    "summary": "The package installs a console command named python2 (pyops.cli:main), so it runs when someone types python2. On first run _register() in cli.py POSTs the hostname and OS to a space-z.ai server and keeps the returned apiKey in ~/.python2/config.json. Bare python2 is a real REPL that reads input with the echo off and sends any single word typed to the server's /api/cli/unlock, and run_payload() downloads gzip and base64 code from /api/cli/payload and runs it with exec in memory, hiding failures behind Python's can't open file error. Comments in the file call this the cover. I did not see what the served code does. I read 2.2 and did not run it.",
    "evidence": "osv:MAL-2026-17807",
    "products": [
      {
        "name": {
          "value": "py2ops",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "2.2",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "MAL-2026-17807",
      "aliases": [
        "MAL-2026-17807"
      ],
      "affected": [
        {
          "package": {
            "name": "py2ops",
            "purl": "pkg:pypi/py2ops",
            "ecosystem": "PyPI"
          },
          "versions": [
            "2.2"
          ],
          "database_specific": {
            "source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/py2ops/MAL-2026-17807.json"
          }
        }
      ],
      "modified": "2026-10-12T05:30:05.891675918Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "iocs": {
          "urls": [
            "https://preview-chat-960504a9-b4e0-4b69-bc80-6ac3d4fa4ae0.space-z.ai/api/cli/init",
            "https://preview-chat-960504a9-b4e0-4b69-bc80-6ac3d4fa4ae0.space-z.ai/api/cli/unlock",
            "https://preview-chat-960504a9-b4e0-4b69-bc80-6ac3d4fa4ae0.space-z.ai/api/cli/payload"
          ],
          "domains": [
            "preview-chat-960504a9-b4e0-4b69-bc80-6ac3d4fa4ae0.space-z.ai",
            "b196q82k8891-d.space-z.ai"
          ]
        }
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 298630,
  "published_at": "2026-10-09T16:02:15+00:00"
}