@yeaft/webchat-agent @1.0.384
Vulnerability report · Last retrieved from osv.dev August 6, 2026 at 7:08 PM UTC
OSV ID
MAL-2026-10723
Ecosystem
npm
Summary
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.
Source: amazon-inspector (b627f9a4ff0aaacfcd612224f76fe679e9d0a04578519d75516136e7496aad43)
Protect your entire dependency tree
Scan your lock files automatically on every PR. Block malicious packages before they reach production.