CVE-2026-90938

LangBot through 0.4.17 Unauthenticated Plugin Registration via WebSocket

Published Sep 14, 2026 CVSS 4.0 · 8.8 High EPSS < 1% KEV · Not listed
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.

Analysis

AI-generated

Technical 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.

Remediation

No solution or workaround provided in the CVE record.

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 15, 2026 at 14:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

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

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'}

Weaknesses
  • CWE-306

    Missing Authentication for Critical Function

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Sep 14, 2026, 1:29 PM
Reserved
Sep 14, 2026, 11:34 AM
Status
Deferred
Published
Sep 14, 2026, 1:19 PM
Modified
Sep 23, 2026, 5:17 PM