ZeroHour

CVE-2026-90938

moderate

Unauthenticated Debug WebSocket in LangBot Plugin Runtime Leaks Chats, Hijacks Bots

CVSS 4.0
8.8 high
EPSS
Published
()
Modified
AI analysis

The LangBot plugin runtime (pip package langbot_plugin) through 0.4.17 starts a debug WebSocket server on 0.0.0.0:5401 at /plugin/ws whose authentication key (plugin_debug_key) defaults to an empty string and is never set by the upstream repository, Docker image, or docker-compose files — which also publish port 5401 to the host — so the key check is skipped entirely. Any remote attacker who can reach that port can register a 'debug plugin' with no credentials; because events are broadcast to all initialized plugins unfiltered, the malicious plugin receives the full plaintext context of every IM message event, including private chats, message chains, and user/sender IDs. The attacker can then inject forged replies, send messages as any configured bot, enumerate bot UUIDs, invoke configured LLM models, read knowledge-base contents, and register malicious tools that feed every user's LLM pipeline. Registering with "prod_mode": true also blocks future legitimate installs of a plugin with the same author/name, causing persistent denial of service. No patched version was available at publication, no public PoC is known, and the flaw is not in the CISA KEV catalog, though exploitation is trivial for anyone with network access to the port.

What to do: No patched release exists yet, so immediately firewall or remove exposure of TCP 5401 — edit docker-compose to drop the host port mapping for 5401 and block the port at the network edge. Set a strong, non-empty plugin_debug_key to restore the authentication gate, and inspect running instances for unknown registered plugins, unexpected outbound messages, or unfamiliar tools in the LLM pipeline as signs of compromise. Rotate bot credentials and review knowledge-base and chat logs for data accessed via a rogue debug plugin.

Affected
langbot_plugin (pip package plugin runtime)through 0.4.17 (all versions ≤ 0.4.17)
LangBot upstream repository, official Docker image, and docker-compose deployments bundling langbot_plugindeployments using langbot_plugin ≤ 0.4.17 (docker-compose additionally maps port 5401 to the host)
Estimated exposure
moderateplausibly on the order of 1k–10k internet-reachable self-hosted deployments (clearly an estimate) — LangBot is a popular self-hosted open-source chatbot framework whose default docker-compose configuration publishes the vulnerable port 5401 to the host, so exposure scales with public deployments of the project; exact active-install or…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

LangBot's plugin runtime (pip package langbot_plugin) through 0.4.17 starts a debug WebSocket server on 0.0.0.0:5401 (/plugin/ws) whose authentication is gated on plugin_debug_key, which defaults to an empty string and is never set by the upstream repository, Docker image, or docker-compose (which additionally publishes port 5401 to the host); the key check is therefore skipped entirely. Any remote attacker able to reach the port can register an arbitrary "debug plugin" without credentials. Because events are broadcast to all initialized plugins without filtering, the attacker's plugin receives the full context of every IM message event (including private chats, message chains, and user/sender IDs in plaintext) and can inject forged replies, send messages as any configured bot, enumerate bot UUIDs, invoke configured LLM models, read knowledge-base contents, and register malicious tools that feed every user's LLM pipeline. Registering with "prod_mode": true causes later legitimate installations of a plugin with the same author/name to be rejected, resulting in persistent denial of service. No patched version was available at the time of publication.

Weakness
CWE-306
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.