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.
Published: 2026-09-14
Score: 8.8 High
EPSS: n/a
KEV: No
Impact: Remote Code Execution
Action: Immediate Mitigation
AI Analysis

Impact

LangBot’s plugin runtime starts a debug WebSocket listener on all interfaces (0.0.0.0) at port 5401 for the /plugin/ws endpoint. Authentication for this endpoint is controlled by a variable named plugin_debug_key, which defaults to an empty string and is never set by the upstream code, Docker image, or docker‑compose configurations. As a result, the key check is effectively bypassed. An attacker who can reach that port can register a rogue plugin without any credentials. Once registered, the attacker’s plugin receives every message event, including private chats, message chains, and user identifiers in clear text, and can inject forged replies, have the bot send messages on the attacker’s behalf, enumerate bot UUIDs, invoke any configured LLM models, read knowledge‑base contents, and register malicious tools that consume every user’s LLM pipeline. Registering a plugin with "prod_mode": true also blocks later legitimate installations of plugins with the same author/name, creating a persistent denial of service. These capabilities allow remote code execution, data exfiltration, and service disruption and reflect a lack of proper authentication (CWE‑306).

Affected Systems

The vulnerability affects all releases of LangBot from its inception up to and including version 0.4.17, as well as the accompanying pip package langbot_plugin that provides the WebSocket functionality. The affected vendor product is langbot-app:LangBot and the vulnerable component is the debug WebSocket server exposed at 0.0.0.0:5401. No patch is currently available for these versions; the upstream repository has not released a fixed release as of the advisory date.

Risk and Exploitability

The CVSS score of 8.8 indicates a high severity impact, and the absence of an EPSS score or KEV listing does not diminish the risk when the technical conditions are met. Because the vulnerability requires only network access to the exposed WebSocket port and no authentication, an attacker on the same network or on an internet‑exposed endpoint could exploit this without additional privileges. The attack vector is therefore network‑based and straightforward to leverage once the port is reachable. Given the severity, it is prudent to act promptly even before a patch becomes available.

Generated by OpenCVE AI on September 14, 2026 at 20:13 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Block inbound traffic to port 5401 using a firewall or access control list so that only trusted internal hosts can reach the debug WebSocket.
  • Upgrade LangBot to a fixed version as soon as the vendor releases one; rebuild Docker images and docker‑compose configurations with the updated package.
  • If awaiting a patch, configure the environment to set plugin_debug_key to a non‑empty secret or disable the debug mode so that authentication is required for the WebSocket endpoint.

Generated by OpenCVE AI on September 14, 2026 at 20:13 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 14 Sep 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 14 Sep 2026 13:00:00 +0000

Type Values Removed Values Added
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.
Title LangBot through 0.4.17 Unauthenticated Plugin Registration via WebSocket
First Time appeared Langbot
Langbot langbot
Weaknesses CWE-306
CPEs cpe:2.3:a:langbot:langbot:*:*:*:*:*:*:*:*
Vendors & Products Langbot
Langbot langbot
References
Metrics cvssV3_1

{'score': 8.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L'}

cvssV4_0

{'score': 8.8, '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-14T13:29:58.833Z

Reserved: 2026-09-14T11:34:24.687Z

Link: CVE-2026-90938

cve-icon Vulnrichment

Updated: 2026-09-14T13:29:54.380Z

cve-icon NVD

Status : Received

Published: 2026-09-14T13:19:32.430

Modified: 2026-09-14T14:17:20.117

Link: CVE-2026-90938

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-14T20:15:06Z

Weaknesses
  • CWE-306

    Missing Authentication for Critical Function