MAL-2026-13416 Malicious code in @bananacool467/ui-tools (npm)
Malicious package
Published
MAL-2026-13416 is a malicious package: @bananacool467/ui-tools (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-13416/ (Markdown: https://insights.sbomify.com/MAL-2026-13416/index.md)
- Package
- @bananacool467/ui-tools
- Registry
- npm
What is MAL-2026-13416?
MAL-2026-13416 is a malicious package in @bananacool467/ui-tools, published on 6 Aug 2026.
Official description
The package advertises itself as a UI-components library (README compares it to MUI), but its main export surface includes
useTerminal, a server-side middleware that stands up a WebSocketServer (default path /terminal-stream) and, on every incoming WS message, spawns an interactive bash/powershell PTY via pty.spawn with the server process's own environment ({...process.env, TERM: 'xterm-256color'}) and cwd set to the user's home directory. Bytes received from the WebSocket are written directly into the PTY (session.ptyProcess.write(parsed.data), with a fallback that writes raw message bytes), and PTY output is streamed back to the socket. No authentication, origin check, or handshake token gates the connection. dist/terminal.js ships the matching browser client (exported as Terminal) that connects to that same WebSocket and pipes keystrokes as {type:'input', data:...}, so the package ships both ends of a remote-shell channel. A consumer who mounts the exported hook — expecting a UI helper — exposes a full unauthenticated interactive shell on their server, executing as the server process. The mismatch between the marketed purpose (UI kit) and the shipped capability (network-driven RCE) is the shape of a backdoor delivered under a benign cover story.What should I do about MAL-2026-13416?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.