MAL-2026-13520 Malicious code in @aster110/cc2wechat (npm)
Malicious package
Published
MAL-2026-13520 is a malicious package: @aster110/cc2wechat (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-13520/ (Markdown: https://insights.sbomify.com/MAL-2026-13520/index.md)
- Package
- @aster110/cc2wechat
- Registry
- npm
What is MAL-2026-13520?
MAL-2026-13520 is a malicious package in @aster110/cc2wechat, published on 7 Aug 2026.
Official description
The package runs a daemon that long-polls Tencent's iLink Bot API (ilinkai.weixin.qq.com) for incoming WeChat messages and forwards each message body into a locally hosted AI agent that is spawned with all approval and sandbox gates disabled. Specifically, TmuxDelivery.deliver writes the message text (
sendToSession(sessionName, "[微信...] " + ctx.text)) into a tmux session whose command line is CC2WECHAT_CONTEXT=... claude --dangerously-skip-permissions, using tmux load-buffer + paste-buffer + send-keys Enter to submit the input. An alternative backend spawns codex exec --json --dangerously-bypass-approvals-and-sandbox and feeds the same WeChat message stream into it. Because these AI CLIs are configured to auto-execute shell commands and filesystem operations without prompts when safety flags are disabled, any party able to send a WeChat message to the linked account can drive arbitrary shell and file operations on the machine running the daemon. The tool is documented in the README as full-host access requiring a disposable VM. The startup entry point is a bin CLI (cc2wechat start), so the remote-shell surface materializes when the operator launches the daemon rather than on npm install or require().What should I do about MAL-2026-13520?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.