chore(deps): update dependency bandit to v1.12.5 [security] - autoclosed #576
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
high priority
invalid
L
low priority
M
medium priority
needs refinement
optional
question
S
security
technical improvement
UX Improvement
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
local-it/mitgliederverwaltung!576
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/hex-bandit-vulnerability"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
1.12.0→1.12.5Quadratic CPU blow-up reassembling fragmented WebSocket messages in Bandit
CVE-2026-65623 / EEF-CVE-2026-65623 / GHSA-vg8x-66vg-5pxh
More information
Details
Summary
Inefficient Algorithmic Complexity vulnerability in mtrudel bandit allows unauthenticated remote denial of service via CPU exhaustion during WebSocket fragment reassembly.
The size guard 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2 called from handle_frame/3 in lib/bandit/websocket/connection.ex appends each non-final continuation frame to a left-nested iolist and then re-measures the entire accumulated buffer with IO.iodata_length/1 on every frame. Because the buffer grows by one element per frame and is fully re-traversed each time, reassembly work is quadratic (O(n^2)) in the number of continuation frames.
The max_fragmented_message_size limit (default 8 MB) bounds total bytes but not frame count, and each frame can carry as little as one payload byte, so an attacker can send millions of tiny continuation frames using modest bandwidth to pin a CPU core for minutes to hours. Many concurrent connections can starve the whole server of CPU, denying service to legitimate users. The WebSocket read timeout does not help, because it is an idle timeout evaluated between reads and cannot preempt the synchronous reassembly work spent inside a single callback.
This issue affects bandit: from 1.11.0 before 1.12.1.
Configurations
This vulnerability only affects applications that serve WebSocket endpoints through Bandit (including Phoenix applications that use Bandit as the HTTP adapter). Applications that do not upgrade any connections to WebSocket are not affected.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
HTTP/2 connection-window starvation pins Plug processes indefinitely in Bandit
CVE-2026-74836 / EEF-CVE-2026-74836 / GHSA-xj8g-532w-jv94
More information
Details
Summary
Allocation of Resources Without Limits or Throttling vulnerability in mtrudel bandit allows an unauthenticated remote attacker to pin an unbounded number of HTTP/2 stream processes indefinitely via connection-level flow control. When a stream's response body outruns the HTTP/2 connection-level send window (default 65,535 bytes, shared across all streams on the connection),
Bandit.HTTP2.Connectionqueues the remaining bytes and a reply closure inpending_sendsand the stream process blocks forever inside a synchronous call to the connection process. Nothing bounds that wait and nothing purges the queue: a clientRST_STREAMfor the blocked stream is delivered to its mailbox but never read while it is stuck inside the call, so cancelling frees nothing, and periodic PING frames keep the transport-level read timeout from ever firing. The equivalent block on the stream-level send window is already bounded at 15 seconds; the connection-level path had no such bound.Each stalled stream pins its process, Plug state, and any resource the Plug holds across the blocked write, such as a pooled upstream connection in a reverse-proxy Plug. The attacker chooses any endpoint whose response exceeds the connection window (common for most non-trivial payloads), grants a generous stream-level window so only the connection window limits it, and keeps the connection alive with periodic PINGs; the primitive is repeatable across streams and connections at the cost of one idle socket each.
This issue affects bandit: from 0.3.4 before 1.12.5.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
HTTP/2 header field values containing CR, LF or NUL are passed to the application unvalidated in Bandit
CVE-2026-75484 / EEF-CVE-2026-75484 / GHSA-x3gh-xhj4-3vq8
More information
Details
Summary
Improper Neutralization of CRLF Sequences ('CRLF Injection') vulnerability in mtrudel bandit allows an unauthenticated remote attacker to smuggle CR, LF, or NUL characters into application-visible request headers via HTTP/2.
Bandit.HTTP2.Stream.read_headers/1validates pseudo-header placement and uniqueness, header-name casing, connection-specific headers, thetevalue, andcontent-length, but never checks field values. Because HPACK carries arbitrary octets, a HEADERS block whose field values contain\r,\n, or\0decodes without error and the values land inconn.req_headersunchanged. The HTTP/1 path already rejects the same octets; HTTP/2 did not.Bandit itself is not a sink for the injected bytes: its own logging uses fixed strings or
inspect, and HTTP/2 response headers are HPACK-encoded and separately rejected by Plug'sput_resp_header, so response splitting is not reachable through this path. The risk is entirely in how a downstream application consumes header values, such as appending one verbatim to a plain-text log or concatenating it into an upstream request. A related gap bundled in the same fix: only:method,:scheme, and:pathwere checked for at most one occurrence; a duplicate:authoritypseudo-header was accepted, with the first instance silently winning asconn.hostwhile a conflicting value remained visible to the application.This issue affects bandit: from 1.4.0 before 1.12.5.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
Release Notes
mtrudel/bandit (bandit)
v1.12.5Compare Source
Changes
Fixes
Enhancements
v1.12.4Compare Source
Fixes
Enhancements
v1.12.3Compare Source
Enhancements
v1.12.2Compare Source
Enhancements
Fixes
(https://github.com/mtrudel/bandit/security/advisories/GHSA-rhh8-5xw9-c3gm,
thanks @lukaszsamson!)
(https://github.com/mtrudel/bandit/security/advisories/GHSA-9q5m-g6v3-6772,
thanks @lukaszsamson!)
v1.12.1Compare Source
Fixes
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
b90dd5afd60b895e3adcchore(deps): update dependency bandit to v1.12.5 [security]to chore(deps): update dependency bandit to v1.12.5 [security] - autoclosedPull request closed