Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

Malicious code in @guangnao/agent-proxy (npm)

The npm package @guangnao/agent-proxy contained malicious code that established a hidden WebSocket connection to an attacker-controlled endpoint (hub.client-llm.com) and used the installer's stored OAuth credentials to proxy requests to Anthropic Claude and OpenAI ChatGPT APIs, monetizing the victim's paid subscriptions without consent.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Users of @guangnao/agent-proxy who invoke the CLI tool with valid Claude or ChatGPT credentials; their authenticated sessions and paid subscriptions are exposed to remote operator control.
Ecosystems
Attack vectors
Affected entities
  • @guangnao/agent-proxynpm package containing malicious code in CLI

The @guangnao/agent-proxy npm package contained intentionally malicious code designed to abuse users' AI API credentials. When the CLI tool was invoked with agent-proxy start, it opened an outbound WebSocket connection to hub.client-llm.com, an endpoint obfuscated at runtime using XOR+base64 encoding with the key 'gnP2p!7xQ' to evade casual code review.\n\nThe malicious behavior accepted remote job messages from the hub operator containing arbitrary HTTP path and body fields. These were then POSTed through the local proxy to api.anthropic.com and ChatGPT/Codex upstream services using the installer's stored OAuth credentials. Responses were streamed back to the hub operator, effectively creating a remote-controlled command channel into the victim's authenticated AI session.\n\nThe attack included a gating mechanism (onlyIfCredentialed) that enrolled only installers with valid Claude or ChatGPT credentials as worker nodes, ensuring the attacker could only exploit users with paid subscriptions. This allowed the hub operator to silently monetize the victim's paid subscription by routing third-party requests through their authenticated session. The behavior was entirely undocumented; the package README falsely claimed the tool was 'self-use only' and warned that vendor ToS forbid account sharing—warnings the malicious code directly violated.\n\nThe incident was identified by Amazon Inspector and credited to the OpenSSF malicious-packages project.

Indicators of compromise

Domains
  • hub.client-llm.com
Hashes
  • 8da2cb00fa6d2b5a0e5f4a4bdca8ca0cfaedf7e583b0f9e9f54274bcf5c39e06

Remediation

  • Immediately uninstall @guangnao/agent-proxy from all systems
  • Revoke OAuth tokens and credentials for Claude and ChatGPT accounts that may have been exposed
  • Review API usage logs for Claude and ChatGPT accounts for unauthorized requests during the period the package was installed
  • Audit npm package dependencies to identify and remove any other packages from the same author or with similar obfuscation patterns
  • Use npm audit to check for other known malicious packages

Sources

  1. GitHub Advisory GHSA-p2xx-33v2-xwcj · GitHub Advisory Database

Cite this entry

"Malicious code in @guangnao/agent-proxy (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 14, 2026; last updated August 14, 2026. https://supplychainattack.org/incident/malicious-code-in-guangnao-agent-proxy-npm-n1jp2r

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. resolvedcritical

    Malicious code in rust-testing-utils (npm)

    The npm package rust-testing-utils contained malicious code that impersonates the pino logger and executes remotely-fetched code with arbitrary privileges. The package spawns a child process that decodes a hardcoded URL, fetches attacker-controlled content, and executes it via Function constructor with full module-loading capability.

    npmCompromised packageMalicious commit
  2. resolvedcritical

    Malicious code in @syncraft-labs/core (npm)

    The npm package @syncraft-labs/core contained obfuscated malicious code in its ESM build that executes on import, fetching and executing attacker-controlled payloads from Ethereum blockchain via JSON-RPC endpoints. The CommonJS build was clean, indicating targeted injection into the ESM entry point.

    npmCompromised packageMalicious commit
  3. resolvedcritical

    Malicious code in localize-translate (npm)

    The npm package localize-translate contained malicious code in its postinstall lifecycle script that collected host identifiers and beaconed them to an attacker-controlled endpoint (gigww0v7.instances.poc.jchunt.top) without user consent. The reconnaissance callback fired automatically on every installation, collecting hostname, platform, architecture, Node version, package name, and timestamp.

    npmCompromised packageMalicious commit
  4. containedcritical

    Malicious code in mutex-plus (npm)

    The npm package mutex-plus contains hidden malicious code that enables remote code execution when a callback object with a specific jobId hash is passed to runExclusive(). The payload is encrypted at rest in lib/plusMutex.min.js and decrypted using the jobId as a key, then executed as a detached Node.js process.

    npmCompromised packageMalicious commit