MAL-2026-10705
Dashboard / Malicious Package / MAL-2026-10705
MAL-2026-10705
Summary: Malicious code in @agent-link/agent (npm)
Details: Source: amazon-inspector (a7018626958a160ab35a17b31ddd130ba9b6046b870f115b0fa83622b66bd912) The package's runtime connects to a hardcoded WebSocket relay (default wss://msclaude.ai) and dispatches messages received from that relay directly into a locally spawned PTY. terminal.js spawns the user's default shell (or powershell.exe on Windows) via node-pty and exposes a write() method that pipes network-received bytes straight into the shell (`ptyProcess?.write(data)`); connection.js routes `terminal_open` / `terminal_input` events from the WebSocket's `on('message')` handler to that PTY. This grants whoever controls the relay endpoint, or anyone holding a session URL, interactive command execution on the host running the agent, including via a `ping`/`GET`/`POST`/`http.request` command path in dist/local-control-client.js, dist/local-control-http.js, dist/tunnel.js, dist/upgrade-operations.js, and worker/worker.cjs. Publisher provenance for the relay is unclear: package.json homepage points at github.com/yilee/agentlink, the README's Related link points at a different GitHub owner (kailunshi_microsoft/AgenticWorker), and the branding plus hardcoded relay domain is msclaude.ai, which is not tied to a verifiable publisher identity. In addition, emergency-upgrade.js fetches a release manifest from https://msclaude.ai/files/agent/latest.json (and beta.json) and downloads a replacement tarball from the same origin, verifying only hash/size/name against a manifest served by that same origin — so control of msclaude.ai also grants signed-by-manifest package replacement.
References: https://www.npmjs.com/package/@agent-link/agent/v/0.1.269, https://www.npmjs.com/package/@agent-link/agent/v/0.1.325, https://www.npmjs.com/package/@agent-link/agent/v/0.1.319, https://www.npmjs.com/package/@agent-link/agent/v/0.1.285, https://www.npmjs.com/package/@agent-link/agent/v/0.1.280, https://www.npmjs.com/package/@agent-link/agent/v/0.1.272, https://www.npmjs.com/package/@agent-link/agent/v/0.1.310, https://www.npmjs.com/package/@agent-link/agent/v/0.1.293, https://www.npmjs.com/package/@agent-link/agent/v/0.1.283, https://www.npmjs.com/package/@agent-link/agent/v/0.1.299, https://www.npmjs.com/package/@agent-link/agent/v/0.1.279, https://www.npmjs.com/package/@agent-link/agent/v/0.1.308, https://www.npmjs.com/package/@agent-link/agent/v/0.1.294, https://www.npmjs.com/package/@agent-link/agent/v/0.1.281, https://www.npmjs.com/package/@agent-link/agent/v/0.1.287, https://www.npmjs.com/package/@agent-link/agent/v/0.1.320, https://www.npmjs.com/package/@agent-link/agent/v/0.1.323, https://www.npmjs.com/package/@agent-link/agent/v/0.1.270, https://www.npmjs.com/package/@agent-link/agent/v/0.1.303, https://www.npmjs.com/package/@agent-link/agent/v/0.1.316, https://www.npmjs.com/package/@agent-link/agent/v/0.1.322, https://www.npmjs.com/package/@agent-link/agent/v/0.1.277, https://www.npmjs.com/package/@agent-link/agent/v/0.1.278, https://www.npmjs.com/package/@agent-link/agent/v/0.1.284, https://www.npmjs.com/package/@agent-link/agent/v/0.1.311, https://www.npmjs.com/package/@agent-link/agent/v/0.1.296, https://www.npmjs.com/package/@agent-link/agent/v/0.1.324, https://www.npmjs.com/package/@agent-link/agent/v/0.1.275, https://www.npmjs.com/package/@agent-link/agent/v/0.1.318, https://www.npmjs.com/package/@agent-link/agent/v/0.1.274, https://www.npmjs.com/package/@agent-link/agent/v/0.1.312, https://www.npmjs.com/package/@agent-link/agent/v/0.1.298, https://www.npmjs.com/package/@agent-link/agent/v/0.1.302, https://www.npmjs.com/package/@agent-link/agent/v/0.1.292, https://www.npmjs.com/package/@agent-link/agent/v/0.1.282, https://www.npmjs.com/package/@agent-link/agent/v/0.1.304, https://www.npmjs.com/package/@agent-link/agent/v/0.1.314, https://www.npmjs.com/package/@agent-link/agent/v/0.1.273, https://www.npmjs.com/package/@agent-link/agent/v/0.1.271, https://www.npmjs.com/package/@agent-link/agent/v/0.1.289, https://www.npmjs.com/package/@agent-link/agent/v/0.1.307
Affected packages
Package
Name: @agent-link/agent
Purl: pkg:npm/%40agent-link/agent
Affected ranges
Type: N/A
Events:
