{
  "schema": "cremit-ioc/v1",
  "generated_at": "2026-07-04T13:30:52.512Z",
  "package": {
    "ecosystem": "npm",
    "name": "purpclaw",
    "version": "0.1.4",
    "publisher": "rojoedjhdopdrhjzdhfojzdopthj",
    "sha256": "sha512-U7WeJGrdPEaxahokKgmRfatW6YIgcJSuo48QdcM2LfNwCmvVeU6ANbHKcvDQnZxD6pe4P+cI0LyMFNEyCG9IOQ==",
    "tarball_url": "https://registry.npmjs.org/purpclaw/-/purpclaw-0.1.4.tgz",
    "weekly_downloads": null,
    "description": "Open-source coding-agent CLI. Terminal-first, multi-agent, self-improving. Supports OpenAI, Anthropic, Gemini, Ollama, and 13 more providers.",
    "repository_url": "https://github.com/weemadscotsman/purpclaw",
    "first_published_at": "2026-06-06T15:01:11.660Z"
  },
  "classification": {
    "label": "malicious",
    "confidence": 0.95,
    "summary": "Static analyzer matched reverse-shell: unambiguous remote-code-execution shape in the install path.",
    "provider": "fast-track",
    "heuristic_score": 68,
    "disposition": "auto-published"
  },
  "references": {
    "npm_url": "https://www.npmjs.com/package/purpclaw/v/0.1.4",
    "pypi_url": null,
    "osv_id": null,
    "osv_url": null,
    "package_page": "https://incidents.cremit.io/packages/npm/purpclaw"
  },
  "techniques": [
    {
      "id": "T1033",
      "name": "System Owner/User Discovery",
      "tactic": "Discovery"
    },
    {
      "id": "T1059",
      "name": "Command and Scripting Interpreter",
      "tactic": "Execution"
    },
    {
      "id": "T1059.004",
      "name": "Command and Scripting Interpreter: Unix Shell",
      "tactic": "Execution"
    },
    {
      "id": "T1059.006",
      "name": "Command and Scripting Interpreter: Python",
      "tactic": "Execution"
    },
    {
      "id": "T1071.001",
      "name": "Application Layer Protocol: Web Protocols",
      "tactic": "Command and Control"
    },
    {
      "id": "T1082",
      "name": "System Information Discovery",
      "tactic": "Discovery"
    },
    {
      "id": "T1115",
      "name": "Clipboard Data",
      "tactic": "Collection"
    },
    {
      "id": "T1195.002",
      "name": "Supply Chain Compromise: Compromise Software Supply Chain",
      "tactic": "Initial Access"
    },
    {
      "id": "T1552.001",
      "name": "Unsecured Credentials: Credentials in Files",
      "tactic": "Credential Access"
    },
    {
      "id": "T1552.004",
      "name": "Unsecured Credentials: Private Keys",
      "tactic": "Credential Access"
    },
    {
      "id": "T1567.002",
      "name": "Exfiltration Over Web Service",
      "tactic": "Exfiltration"
    }
  ],
  "indicators": {
    "network": {
      "urls": [],
      "ipv4": [],
      "webhook_bins": [],
      "discord_webhook_ids": [],
      "telegram_bots": [],
      "github_repos": []
    },
    "files": {
      "credential_paths": []
    },
    "deps": {
      "suspicious": []
    },
    "encoded": {
      "base64": []
    },
    "metadata": {
      "heuristic_flags": [
        "publish-burst:5",
        "new-publisher:0d",
        "publisher-handle-randomlooking",
        "has-source-repo",
        "ai-agent-framework"
      ],
      "static_flags": [
        "reads-env-vars",
        "child-process-spawn",
        "reads-ai-api-keys",
        "public-github-push",
        "reads-homedir",
        "reads-system-info",
        "reverse-shell",
        "clipboard-access",
        "py-pip-install-runtime",
        "reads-github-tokens",
        "fs-recursive-read",
        "reads-discord-tokens",
        "reads-slack-tokens",
        "py-urllib-request",
        "reads-ssh-keys"
      ],
      "self_described_as": []
    }
  },
  "stix_hints": {
    "indicator_pattern_examples": [
      "[file:hashes.'SHA-256' = 'sha512-U7WeJGrdPEaxahokKgmRfatW6YIgcJSuo48QdcM2LfNwCmvVeU6ANbHKcvDQnZxD6pe4P+cI0LyMFNEyCG9IOQ==']"
    ],
    "note": "These are STIX 2.1 indicator pattern fragments, not a full bundle. Wrap each in {type:\"indicator\", pattern:..., pattern_type:\"stix\"} and add identity / created_by_ref objects to ingest into a TIP."
  }
}