CVE-2026-39807 Client-supplied URI scheme trusted without transport verification in bandit
Attackers can spoof HTTPS scheme on plaintext connections, bypassing SSL redirects and secure cookie protections in Bandit web server.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-39807?
CVE-2026-39807 is a medium-severity vulnerability in mtrudel bandit, published on 1 May 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
Reliance on Untrusted Inputs in a Security Decision vulnerability in mtrudel bandit allows unauthenticated transport-state spoofing on plaintext HTTP connections.
'Elixir.Bandit.Pipeline':determine_scheme/2 in lib/bandit/pipeline.ex returns the client-supplied URI scheme verbatim, ignoring the transport's secure? flag. HTTP/1.1 absolute-form request targets (e.g. GET https://victim/path HTTP/1.1) and the HTTP/2 :scheme pseudo-header are both attacker-controlled strings that flow through this function. Over a plaintext TCP connection, a client can declare https and Bandit will set conn.scheme = :https even though no TLS was negotiated.
Downstream Plug consumers that branch on conn.scheme are silently misled: Plug.SSL's already-secure branch skips its HTTP→HTTPS redirect, cookies emitted with secure: true are sent over plaintext, audit logs record requests as having arrived over HTTPS, and CSRF/SameSite gating may make incorrect decisions.
This issue affects bandit: from 1.0.0 before 1.11.0.
Weakness: CWE-807
Which versions are affected by CVE-2026-39807?
3 open source packages ship an affected version, including bandit.
| Package | Affected | Fixed in |
|---|---|---|
bandit Hex | From 1.0.0 | 1.11.0 |
bandit Hex | From 1.0.0 | 1.11.0 |
bandit Hex | From 1.0.0 | 1.11.0 |
How do I fix CVE-2026-39807?
Upgrade bandit to 1.11.0 or later.
Is CVE-2026-39807 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-39807 exists.
Sources
Also known as EEF-CVE-2026-39807, GHSA-375f-4r2h-f99j.