· via dev.to (home feed)
Unauthenticated shell endpoint in npm package @bananacool467/ui-tools fixed in 0.1.9-beta
Versions 0.1.0-beta through 0.1.7-beta of npm package @bananacool467/ui-tools exposed an unauthenticated WebSocket terminal that gave connecting clients a server shell; 0.1.9-beta adds auth before the upgrade.

What happened
The maintainer of the npm package @bananacool467/ui-tools has disclosed that prerelease versions of the package exposed an unauthenticated WebSocket terminal endpoint. In a security notice dated August 27, 2026 and published on dev.to, the maintainer states that versions 0.1.0-beta through 0.1.7-beta allowed any client that could reach the endpoint to interact with a pseudo-terminal running on the host server — in effect, a shell requiring no credentials.
The flaw is tracked as OSV advisory MAL-2026-13416, which lists all eight prerelease versions from 0.1.0-beta to 0.1.7-beta as affected. According to the notice, the advisory was generated from findings by Amazon Inspector and includes hashes identifying the affected package artifacts. The notice moves from affected 0.1.7-beta directly to fixed 0.1.9-beta and does not mention a 0.1.8-beta release.
Intentional feature, missing safeguard
The terminal itself was not an accident. According to the maintainer, ui-tools is not intended as a frontend-only component library; it bundles a set of development and UI utilities, one of which is an optional terminal interface. The defect was that the WebSocket endpoint behind that terminal performed no authentication, so a server enabling the feature risked handing a shell to anyone able to connect to it.
How 0.1.9-beta fixes it
The fix adds authentication in front of the WebSocket upgrade. In 0.1.9-beta, the implementation checks a token before calling handleUpgrade(), so unauthenticated connection attempts are rejected before the socket is upgraded. After the patch, knowing the endpoint's location alone is no longer enough to open a terminal session. The maintainer notes that 0.1.9-beta is not included in the advisory's affected-version list.
What users should do
Projects on an affected version are told to upgrade immediately, either via npm install @bananacool467/ui-tools@latest or explicitly via npm install @bananacool467/[email protected]. Installed versions can be checked with npm ls @bananacool467/ui-tools.
The maintainer also recommends pinning the package to a known version in production rather than blindly accepting arbitrary prerelease updates. Beyond upgrading, the notice offers no incident-response guidance and does not say whether the exposed endpoint was ever accessed.
Filed in the malicious-packages database
One wrinkle: the advisory record lives in the OpenSSF malicious-packages database — the notice points to that repository on GitHub as the underlying source — and was generated from Amazon Inspector findings. The maintainer's own explanation describes an authentication oversight in an intentional feature rather than deliberately harmful code, and the notice does not reconcile the two framings. In practical terms it matters little: an unauthenticated remote shell is dangerous regardless of intent.
Why it matters
An npm dependency that opens an unauthenticated shell on whatever server runs it sits at the severe end of supply-chain risk, since anyone who can reach the endpoint gains arbitrary command execution on the host. Because packages like this are pulled in as conveniences, they often end up in environments developers consider internal or low-risk, where network reachability is broader than assumed.
The case also shows how a developer convenience — a terminal interface bundled with UI tooling — becomes a production liability when authentication is treated as an afterthought. And it demonstrates the detection pipeline working as intended: automated scanning surfaced the behavior, an OSV record made it actionable, and a patched release gives teams a concrete version to target. If @bananacool467/ui-tools appears anywhere in your dependency tree, check the version and move off anything older than 0.1.9-beta.
- #npm
- #security
- #supply-chain
- #javascript
- #websocket