Description
Client-Side Enforcement of Server-Side Security vulnerability in the WebSocket connection handling of mtrudel bandit allows a remote client to keep running WebSock handler code after the server has stopped its connection, via data frames sent after ignoring the server's Close frame.

When a WebSock callback returns {:stop, ...}, Bandit.WebSocket.Connection calls terminate/2, sends Close and shuts down the write side, but keeps the connection process running in a :closing state. handle_frame/3 and handle_info/3 never check that state, so later frames still reach handle_in/2 and later messages reach handle_info/2, with the state from the stop tuple, until the client sends Close, TCP drops or the idle timeout fires. A client refused in init/1 after a failed token check could still run an admin-only action.

This issue affects bandit: from 0.5.1 before 1.14.0.
Published: 2026-10-26
Score: 6.3 Medium
EPSS: n/a
KEV: No
Impact: Privilege Escalation via WebSocket
Action: Apply Patch
AI Analysis

Impact

The vulnerability allows a remote client to continue executing server‑side WebSocket handler code after the server has closed the connection, because the connection remains in a :closing state and incoming frames are not checked. This flaw can be used to bypass token validation performed in init/1 and trigger admin‑only actions, effectively permitting unauthorized privilege escalation.

Affected Systems

The flaw exists in the Bandit web server framework from mtrudel, affecting all releases from 0.5.1 up to, but not including, 1.14.0.

Risk and Exploitability

The CVSS score of 6.3 indicates moderate severity. The EPSS score is not available and the vulnerability is not listed in CISA's KEV catalog. An attacker can trigger the flaw by attempting a WebSocket connection, sending frames after the server has issued a Close frame. The exploit is remote and requires only network connectivity to the WebSocket endpoint, with no additional credentials.

Generated by OpenCVE AI on October 26, 2026 at 15:24 UTC.

Remediation

Vendor Workaround

Mark the WebSock state as stopped whenever a callback returns {:stop, ...}, and have handle_in/2 and handle_info/2 return {:ok, state} without acting while that mark is set.


OpenCVE Recommended Actions

  • Upgrade to Bandit version 1.14.0 or higher, which removes the :closing state handling flaw.
  • If an upgrade cannot be performed immediately, implement the provided workaround: mark the WebSock state as stopped when a callback returns a {:stop, …} tuple and modify handle_in/2 and handle_info/2 to return {:ok, state} without executing handler logic while the state is marked stopped.
  • Strengthen token validation in init/1 so that any failed authentication results in immediate termination before the WebSock handler is invoked, ensuring that unauthenticated clients cannot reach privileged actions.

Generated by OpenCVE AI on October 26, 2026 at 15:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 26 Oct 2026 14:00:00 +0000

Type Values Removed Values Added
Description Client-Side Enforcement of Server-Side Security vulnerability in the WebSocket connection handling of mtrudel bandit allows a remote client to keep running WebSock handler code after the server has stopped its connection, via data frames sent after ignoring the server's Close frame. When a WebSock callback returns {:stop, ...}, Bandit.WebSocket.Connection calls terminate/2, sends Close and shuts down the write side, but keeps the connection process running in a :closing state. handle_frame/3 and handle_info/3 never check that state, so later frames still reach handle_in/2 and later messages reach handle_info/2, with the state from the stop tuple, until the client sends Close, TCP drops or the idle timeout fires. A client refused in init/1 after a failed token check could still run an admin-only action. This issue affects bandit: from 0.5.1 before 1.14.0.
Title WebSocket frames keep reaching the WebSock after a server-initiated close in Bandit
First Time appeared Mtrudel
Mtrudel bandit
Weaknesses CWE-602
CPEs cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*
Vendors & Products Mtrudel
Mtrudel bandit
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-10-26T13:31:18.257Z

Reserved: 2026-10-23T12:45:01.107Z

Link: CVE-2026-110314

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-26T14:16:25.470

Modified: 2026-10-26T16:59:16.113

Link: CVE-2026-110314

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-26T15:45:12Z

Weaknesses
  • CWE-602

    Client-Side Enforcement of Server-Side Security