LiveActive security incident?Get immediate response
CVE Record

CVE-2026-39805: CL.CL HTTP request smuggling via duplicate Content-Length in bandit

Inconsistent Interpretation of HTTP Requests vulnerability in mtrudel bandit allows HTTP request smuggling via duplicate Content-Length headers. 'Elixir.Bandit.Headers':get_content_length/1 in lib/bandit/headers.ex uses List.keyfind/3, which returns only the first matching header. When a request contains two Content-Length headers with different values, Bandit silently accepts it, uses the first value to read the body, and dispatches the remaining bytes as a second pipelined request on the same keep-alive connection. RFC 9112 §6.3 requires recipients to treat this as an unrecoverable framing error. When Bandit sits behind a proxy that picks the last Content-Length value and forwards the request rather than rejecting it, an unauthenticated attacker can smuggle requests past edge WAF rules, path-based ACLs, rate limiting, and audit logging. This issue affects bandit: before 1.11.0.

MediumCVSS 6.3Not KEV-listedUpdated
Glexia's TakeAutomated analysismoderate

Security readout for executives and security teams

Plain-English summary

Bandit may misread requests containing conflicting Content-Length headers. In certain proxy deployments, attackers could conceal a second request from edge security controls, potentially bypassing WAF rules, access controls, rate limits, and audit logging. The supplied description identifies Bandit versions before 1.11.0 as affected.

Executive priority

Treat this as a prompt remediation item for exposed Bandit services behind proxies, especially where edge controls enforce authorization or protect sensitive paths. It is not supported as an emergency active-exploitation event, but successful abuse could undermine multiple preventive and detective controls simultaneously.

Technical view

Bandit uses the first matching Content-Length header instead of rejecting conflicting duplicates as required by RFC 9112. If an upstream proxy uses the last value, Bandit can treat leftover body bytes as another request on the same persistent connection, creating CL.CL request smuggling.

Likely exposure

Exposure requires Bandit before 1.11.0 and a front-end proxy that accepts conflicting Content-Length headers while interpreting them differently. Internet-facing applications behind WAFs, reverse proxies, or path-based controls deserve prompt review. Direct Bandit deployments without such parsing disagreement may have lower practical exposure.

Exploitation context

The attack is unauthenticated and network-accessible but requires a particular proxy-to-Bandit parsing mismatch. The bundle reports CVSS 4.0 score 6.3 and does not identify CISA KEV listing or evidence of active exploitation.

Researcher notes

The issue is CWE-444 request smuggling caused by inconsistent message framing. The narrative scope says versions before 1.11.0 are affected, while the supplied structured affected entries appear inconsistent and default to unaffected. Confirm exact package and version applicability against the vendor advisory and patch.

Mitigation direction

  • Upgrade Bandit to version 1.11.0 or later after compatibility testing.
  • Configure upstream proxies to reject requests containing conflicting Content-Length headers.
  • Review vendor guidance and the referenced patch before applying compensating controls.
  • Prioritize internet-facing services where edge controls protect sensitive or privileged routes.

Validation and detection

  • Inventory applications and confirm their deployed Bandit versions.
  • Identify every proxy, load balancer, CDN, or WAF positioned before Bandit.
  • Verify front-end components reject conflicting duplicate Content-Length headers.
  • Use authorized, controlled testing to confirm ambiguous requests fail without reaching application routes.
  • Review logs for unusual pipelined requests or discrepancies between edge and application records.
Prepared
Confidence
medium
Sources
6

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cwe · low confidence lookup

CWE-444: Exact CWE lookup

Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.

Open ATT&CK lookup
cve · low confidence lookup

CVE-2026-39805 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Medium
CVSS
6.3 (4.0)
Known Exploited
No
Published

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

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

1CVSS vectors
3Timeline events
1ADP providers
5Source links

SSVC decision data

CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: yesTechnical Impact: partial

CVSS vector scores

1 official score

We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.

ScoreVersionSeverityVectorExploitImpactSource
6.3CVSS 4.0MediumCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:NEEF

Vulnerability scoring details

Base CVSS 4.0 score

6.3Medium
CVSS 4.0 vector shape for CVE-2026-39805Attack VectorAttack ComplexityAttack RequirementsPrivileges RequiredUser InteractionVS ConfidentialityVS IntegrityVS AvailabilitySS ConfidentialitySS IntegritySS Availability

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

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Attack Requirements
NonePresent
Privileges Required
NoneLowHigh
User Interaction
NonePassiveActive
VS Confidentiality
HighLowNone
VS Integrity
HighLowNone
VS Availability
HighLowNone
SS Confidentiality
HighLowNone
SS Integrity
HighLowNone
SS Availability
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CISA-ADPCISA ADP Vulnrichment
other:ssvc
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
mtrudelbanditbandit, 0.1.0unaffected
mtrudelbanditmtrudel/bandit, 7bc8d97cd22697c299baa8012b7f419a7606a80cunaffected
Weakness

CWE details

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.

CWE-444 · source CWE mapping

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.