MAL-2026-10723
Dashboard / Malicious Package / MAL-2026-10723
MAL-2026-10723
Summary: Malicious code in @yeaft/webchat-agent (npm)
Details: Source: amazon-inspector (b627f9a4ff0aaacfcd612224f76fe679e9d0a04578519d75516136e7496aad43) The package installs itself as a user-level service (systemd on Linux via service/linux.js, with launchd/PM2 siblings) and, at agent startup, opens a WebSocket to a configured serverUrl (default ws://localhost:3456, overridable via SERVER_URL/config). The WebSocket message router in connection/message-router.js dispatches server-sent frames: `terminal_create` spawns the user's login shell via node-pty (terminal.js: `pty.spawn(shell,...)`) in the agent's workDir, and `terminal_input` writes the server's `msg.data` bytes directly into that PTY, giving whoever controls the server (or an attacker holding AGENT_SECRET / positioned to MITM the WebSocket) an interactive shell as the installing user. An `upgrade_agent` message handled by connection/upgrade.js runs `npm install @yeaft/webchat-agent@latest --registry=https://pkg.yeaft.com/` and spawns a detached script that stops the service, installs the new version, and restarts it, so the remote party can also swap the agent's own code on demand from a publisher-controlled registry. On every startup, index.js additionally git-clones https://github.com/yeaft/yeaft-skills.git from the mutable `main` branch into ~/.claude/plugins/marketplaces/yeaft-skills-dev, chmod 0755 the hook scripts, and writes the plugin as enabled into ~/.claude/settings.json, giving whoever controls that repo the ability to land executable Claude plugin hooks on the next agent boot. The service/linux.js unit also prepends ~/.local/bin and ~/.npm-global/bin to PATH in the service environment. The remote-shell and self-upgrade paths are the package's advertised remote-agent purpose, but by threat-model definition a network-source-to-spawned-PTY dataflow on the installer's host is a backdoor, and the blast radius is full-host code execution as the installing user.
References: https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.171, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.199, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.325, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.376, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.189, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.283, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.252, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.238, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.243, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.282, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.216, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.184, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.352, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.329, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.361, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.281, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.217, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.188, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.312, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.350, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.253, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.355, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.300, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.206, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.257, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.226, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.337, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.309, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.273, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.311, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.269, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.289, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.258, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.222, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.374, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.224, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.351, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.336, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.335, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.242, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.307, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.172, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.228, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.219, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.321, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.249, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.211, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.371, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.368, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.244, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.262, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.344, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.180, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.237, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.334, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.323, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.250, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.315, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.298, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.354, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.227, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.332, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.274, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.182, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.378, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.245, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.369, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.192, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.194, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.220, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.338, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.296, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.232, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.367, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.202, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.310, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.324, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.341, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.308, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.255, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.364, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.198, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.204, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.247, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.277, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.290, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.203, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.263, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.201, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.254, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.288, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.278, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.349, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.183, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.235, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.175, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.260, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.365, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.285, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.239, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.295, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.353, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.331, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.193, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.384, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.185, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.342, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.240, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.304, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.246, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.287, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.292, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.173, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.264, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.359, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.195, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.316, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.377, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.234, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.267, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.210, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.270, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.314, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.363, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.181, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.221, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.293, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.233, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.214, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.373, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.333, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.200, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.356, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.190, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.207, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.284, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.317, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.294, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.272, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.186, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.271, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.348, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.191, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.357, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.213, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.347, https://www.npmjs.com/package/@yeaft/webchat-agent/v/1.0.265
Affected packages
Package
Name: @yeaft/webchat-agent
Purl: pkg:npm/%40yeaft/webchat-agent
Affected ranges
Type: N/A
Events:
