CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-88007

CVE-2026-88007: Connection Hijacking and Unauthorized Session Reuse in Traefik HTTP/3 Proxying

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 11, 2026·7 min read·1 visit

Executive Summary (TL;DR)

Unauthenticated remote session hijacking via backend connection reuse over HTTP/3 in Traefik v2.11.x (< 2.11.57) and v3.x (< 3.7.13) when using connection-bound auth (NTLM/Negotiate).

CVE-2026-88007 is a critical vulnerability in Traefik where connection-bound backend authentication (like NTLM or Kerberos) is compromised over HTTP/3. Due to an uninitialized connection transport context, authenticated TCP sockets from a victim are leaked into a globally shared pool and subsequently reused by unrelated clients, leading to unauthenticated session hijacking.

Vulnerability Overview

CVE-2026-88007 represents a critical security flaw in the Traefik reverse proxy and load balancer. The vulnerability lies within Traefik's implementation of HTTP/3 proxying and its connection management when interfacing with backends that require connection-bound authentication, such as NTLM or Negotiate (Kerberos). Under specific conditions, an unauthenticated client can hijack and reuse an authenticated session of another legitimate user.

Connection-bound authentication mechanisms bind a user's authenticated session directly to the physical transport layer socket (TCP) established between the reverse proxy and the backend server. To maintain isolation between different clients, a reverse proxy must ensure that distinct client connections do not share the same backend connection context. When this isolation is compromised, the security boundary between users collapses.

In Traefik, this boundary was maintained correctly for HTTP/1.1 and HTTP/2 clients, but a protocol-parity gap occurred in HTTP/3. Because HTTP/3 utilizes QUIC (UDP) instead of TCP on the frontend, the connection initialization path is handled differently. This difference led to an omission in context initialization, resulting in authenticated backend TCP connections being returned to a globally shared transport pool rather than being locked to a specific client.

Root Cause Analysis

The technical root cause of the vulnerability resides in the lack of connection-scoped transport initialization within Traefik's HTTP/3 server entrypoint setup. Normally, when Traefik forwards requests to backends utilizing connection-bound authentication, it employs a stickyRoundTripper. For HTTP/1.1 and HTTP/2, this mechanism is instantiated via service.AddTransportOnContext(ctx), which allocates an empty connection-scoped transport holder within the request context.

When a backend challenges a request with a WWW-Authenticate: NTLM or Negotiate header, the proxy's kerberosRoundTripper intercepts the response. It creates a dedicated, cloned RoundTripper instance for that client and stores its reference in the allocated context-bound holder. Subsequent requests from the same client reuse this dedicated RoundTripper, ensuring all communication goes through the same backend TCP connection, isolated from other clients.

However, in pkg/server/server_entrypoint_tcp_http3.go, the ConnContext generator for HTTP/3 failed to call service.AddTransportOnContext(ctx). As a result, the request context lacked the necessary placeholder. When the kerberosRoundTripper completed the authentication handshake, it had no location to cache the dedicated RoundTripper, causing the authenticated backend TCP connection to be returned to the globally shared backend pool instead of being bound to the client.

Furthermore, the logic used to determine whether connection-bound authentication was being utilized had a validation weakness. The proxy analyzed the WWW-Authenticate header using a case-sensitive prefix match (strings.HasPrefix). Because RFC 9110 dictates that authentication schemes are case-insensitive, backends responding with lower-case schemes (such as ntlm or negotiate) bypassed the isolation logic entirely, reverting to the shared pool.

Code Analysis

To understand the vulnerability, analyze the original implementation of the ConnContext function in pkg/server/server_entrypoint_tcp_http3.go and compare it to the corrected patch. The original code only configured TLS options name in the context, neglecting the required initialization of the connection transport holder.

// BEFORE PATCH
ConnContext: func(ctx context.Context, c *quic.Conn) context.Context {
    tlsOptionsName, err := h3.getTLSOptionsName(c)
    if err != nil {
        log.WithoutContext().Errorf("Error getting TLS options name for client: %v", err)
        return ctx
    }
    return tcp.AddTLSOptionsNameInContext(ctx, tlsOptionsName)
},
// AFTER PATCH
ConnContext: func(ctx context.Context, c *quic.Conn) context.Context {
    // This adds an empty struct in order to store a RoundTripper in the ConnContext in case of Kerberos or NTLM.
    ctx = service.AddTransportOnContext(ctx)
 
    tlsOptionsName, err := h3.getTLSOptionsName(c)
    if err != nil {
        log.WithoutContext().Errorf("Error getting TLS options name for client: %v", err)
        return ctx
    }
 
    return tcp.AddTLSOptionsNameInContext(ctx, tlsOptionsName)
},

The secondary fix corrected the header-matching logic inside pkg/server/service/roundtripper.go. The case-sensitive prefix search was replaced with a parsing step that strips parameters and evaluates the scheme in a case-insensitive manner using strings.EqualFold.

// BEFORE PATCH
func containsNTLMorNegotiate(h []string) bool {
    return slices.ContainsFunc(h, func(s string) bool {
        return strings.HasPrefix(s, "NTLM") || strings.HasPrefix(s, "Negotiate")
    })
}
 
// AFTER PATCH
func containsNTLMorNegotiate(h []string) bool {
    return slices.ContainsFunc(h, func(s string) bool {
        // RFC 9110 section 11.1 defines the auth-scheme as case-insensitive,
        // hence a challenge is matched on its scheme token whatever its case.
        scheme, _, _ := strings.Cut(s, " ")
        return strings.EqualFold(scheme, "NTLM") || strings.EqualFold(scheme, "Negotiate")
    })
}

This two-pronged fix is comprehensive because it addresses both the initialization failure that completely broke the isolation for HTTP/3 and the parsing weaknesses that could allow variant bypasses. By mapping the authentication context explicitly to the QUIC-level connection context and properly parsing headers in compliance with RFC 9110, the patch successfully stops session-bound leakage.

Exploitation Methodology

Exploitation of CVE-2026-88007 does not require sophisticated tools or credentials. It relies on the presence of a victim establishing an authenticated session over HTTP/3. The primary prerequisite is that the Traefik entrypoint must support HTTP/3, keep-alives must be enabled on backend TCP connections, and the backend application must utilize connection-bound authentication like NTLM or Negotiate.

An attacker begins by establishing their own HTTP/3 session to the same Traefik instance. The attacker does not need to submit valid credentials; they simply wait for or actively trigger connections. When a legitimate user (the victim) logs in, their credentials are authenticated, and their backend connection is erroneously placed in the globally shared pool due to the context initialization omission.

When the attacker sends a request to the backend through Traefik, the load balancer retrieves an active connection from the shared backend pool. Due to the lack of client isolation, Traefik may select the active backend connection previously authenticated by the victim. The backend executes the attacker's request within the context of the victim's session, resulting in a successful security bypass.

Impact Assessment

The severity of CVE-2026-88007 is classified as critical, receiving a CVSS v4.0 score of 9.1. The primary impacts are high-severity compromises of both confidentiality and integrity. Because the proxy acts on behalf of the client, an attacker hijacking the session inherits the exact authorization scope of the victim user, which can include administrative control, access to restricted personnel data, or the ability to execute transactions.

The vector CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N indicates that the attack vector is network-based and does not require complex execution, but does require specific environmental conditions (the 'AT:P' parameter, representing the prerequisite of having an active HTTP/3 connection-bound backend). No special privileges or user interaction are required to exploit the bug.

While this vulnerability has not been observed in active ransomware campaigns or cataloged in the CISA KEV at the time of publication, the potential impact on enterprise environments using Traefik in front of legacy Active Directory, Exchange, or IIS environments is severe. The lack of auditing capability makes this issue particularly dangerous, as the backend server logs the activity as belonging to the legitimate victim, leaving no simple trail pointing to the attacker.

Remediation & Mitigation

Remediation requires upgrading Traefik to the patched releases. For deployments using the v2 branch, you must upgrade to at least version 2.11.57. For deployments on the v3 branch, you must upgrade to at least version 3.7.13. These updates are drop-in replacements and do not alter other routing behaviors.

If upgrading is not immediately possible, you must implement temporary mitigations to secure your environment. The most effective workaround is to disable HTTP/3 on any entrypoints leading to backends that utilize connection-bound authentication. By removing the http3: {} block from your configuration, Traefik will fall back to HTTP/1.1 or HTTP/2, where the context isolation mechanisms function correctly.

Alternatively, you can disable backend connection keep-alives by setting disableKeepAlives: true in your ServersTransport settings. While this prevents the reuse of authenticated connections, it will introduce latency as a new TCP connection must be established for every request. Lastly, transitioning backends from legacy NTLM/Negotiate to modern authentication protocols (OIDC, OAuth 2.0) is strongly recommended to eliminate transport-bound vulnerabilities entirely.

Official Patches

TraefikTraefik PR containing security fixes for HTTP/3 backend connection reuse and parsing issues.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.1/ 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Affected Systems

Traefik HTTP/3 Entrypoints proxied to connection-bound authenticated backends (NTLM/Negotiate)

Affected Versions Detail

Product
Affected Versions
Fixed Version
Traefik
Traefik
>= 2.11.0, < 2.11.572.11.57
Traefik
Traefik
>= 3.0.0, < 3.7.133.7.13
AttributeDetail
CWE IDCWE-287, CWE-863
Attack VectorNetwork
CVSS v4.0 Score9.1
ImpactSession Hijacking / Unauthorized Data Access
Exploit Statusnone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1078Valid Accounts
Initial Access
T1190Exploit Public-Facing Application
Initial Access
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-287
Improper Authentication

The software does not prove or insufficiently proves that a claim is correct.

Vulnerability Timeline

Initial test fixes applied addressing configuration setups
2026-08-24
Security fix patch implemented and committed by Traefik developer
2026-09-01
Security Advisory GHSA-qqjf-53cj-pwvv is published
2026-09-10
Official CVE record CVE-2026-88007 is published in the CVE and NVD databases
2026-09-10

References & Sources

  • [1]Traefik Security Advisory
  • [2]GitHub Pull Request #13812
  • [3]GitHub Commit Patch
  • [4]Traefik Release v2.11.57
  • [5]Traefik Release v3.7.13

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 2 hours ago•CVE-2026-88004
7.0

CVE-2026-88004: Security Bypass in Traefik Entrypoint Protections via Smuggled Request Trailers

An interpretation conflict and security bypass vulnerability in the entrypoint security mechanisms of Traefik allows unauthenticated remote attackers to bypass header-name sanitization and strip/reject policies. By smuggling sensitive, protected, or trusted header names inside an HTTP/1.1 chunked trailer or an HTTP/2 trailer, attackers can bypass Traefik's security defenses if a downstream backend merges trailers into the header namespace.

Alon Barad
Alon Barad
3 views•5 min read
•about 3 hours ago•CVE-2026-88008
7.0

CVE-2026-88008: Middleware Security Bypass via Unencrypted HTTP/2 (h2c) Connection Upgrades in Traefik

An architectural flaw in the Traefik reverse proxy allows unauthenticated remote attackers to bypass security middlewares (such as basic authentication, IP allowlists, and forward authorization) by initiating an unencrypted HTTP/2 (h2c) upgrade request, causing the proxy to transition the connection into an opaque bi-directional TCP tunnel.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 4 hours ago•CVE-2026-88006
6.5

CVE-2026-88006: Incorrect Authorization in Open WebUI OAuth Token Exchange

An incorrect authorization vulnerability in Open WebUI allows users to bypass Identity Provider (IdP) role revocations and demotions. Prior to version 0.11.1, the OAuth token exchange endpoint failed to execute user synchronization and group mapping checks, enabling users with active provider tokens to establish sessions with their cached, stale database roles.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-88016
7.1

CVE-2026-88016: Arbitrary Filesystem Metadata Modification and Directory Traversal in rclone

CVE-2026-88016 is a high-severity directory traversal and arbitrary metadata modification vulnerability in rclone versions prior to 1.75.1. When synchronizing directories with the `--links` and `--metadata` flags, rclone fails to apply sandboxing to directory metadata operations, leading to symbolic link following that allows modification of arbitrary files outside the target destination.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 6 hours ago•GHSA-M3WP-48JR-VR4G
7.5

GHSA-m3wp-48jr-vr4g: Unbounded Remote Media Fetch and Video Frame Expansion DoS in mistral.rs

An unbounded resource consumption and server-side request forgery (SSRF) vulnerability in mistral.rs allows remote, unauthenticated attackers to cause a denial of service (DoS) or execute SSRF attacks. The flaw exists in mistralrs-server-core due to unchecked remote media fetching, infinite stream buffering, and unbounded FFmpeg frame extraction.

Amit Schendel
Amit Schendel
6 views•8 min read
•about 7 hours ago•CVE-2026-86083
7.7

CVE-2026-86083: Sandbox Escape and Remote Code Execution via Code-Printer Injection in n8n Legacy Expression Engine

A critical sandbox escape vulnerability exists in the legacy expression engine of n8n. By leveraging Shared Builtin Tampering combined with Code-Printer Injection, an authenticated attacker can hijack the mutable global JSON.stringify function. This hijacking allows the attacker to inject arbitrary Node.js source code into internal execution contexts during code generation, escaping the isolated-vm sandbox and achieving full remote code execution on the host system.

Amit Schendel
Amit Schendel
6 views•6 min read