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-88004

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

Alon Barad
Alon Barad
Software Engineer

Sep 11, 2026·5 min read·22 visits

Executive Summary (TL;DR)

Unauthenticated attackers can bypass Traefik's entrypoint header filters (like X-Forwarded-For stripping) by smuggling security-sensitive headers in HTTP trailers. When Traefik's buffering or retry middlewares parse the request, the trailer values bypass sanitization and are forwarded to backends, which may trust and process them as authenticated headers.

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.

Vulnerability Overview

Traefik features built-in entrypoint middlewares designed to clean, sanitize, and validate incoming HTTP headers before requests are forwarded to internal backend endpoints. These defenses include forwardedHeaders (which strips potentially spoofed forwarding headers), aliasHeadersStrategy (which rejects conflicting header aliases), and underscoreHeadersStrategy (which drops headers containing underscore characters).

The vulnerability is exposed when Traefik is deployed with body-buffering or retry middlewares alongside these sanitization policies. Under this configuration, unauthenticated remote attackers can bypass header-based entrypoint security filters completely.

The flaw is classified under CWE-436 (Interpretation Conflict) and CWE-807 (Reliance on Untrusted Inputs in a Security Decision). This allows malicious actors to smuggle security-sensitive configurations past the edge proxy, resulting in subsequent privilege escalation and trust spoofing on downstream applications.

Root Cause Analysis

The core flaw is an interpretation conflict between how Traefik handles HTTP headers and how Go's standard library net/http package processes HTTP trailers. Under standard specifications, request trailers arrive at the absolute end of the request body, after the initial HTTP headers have been parsed and evaluated.

Traefik's entrypoint security middlewares inspect only the initial HTTP headers (req.Header) because trailers are not yet populated when routing begins. However, when buffering or retry middlewares are active, they must read the entire request body to memory or disk prior to routing. This is accomplished using standard library calls such as io.ReadAll(req.Body).

This read operation automatically forces the underlying Go parser to read the chunked request trailers and populate the req.Trailer map. When Traefik clones and forwards this request, it includes these parsed trailers. If a downstream backend web server or application framework automatically merges HTTP trailers into the main HTTP header namespace (such as for CGI compliance), the smuggled values bypass the edge proxy filters and are processed as trusted headers.

Code Analysis

The vulnerable proxy implementation failed to strip parsed trailers from the outgoing cloned request. The patch resolves this by iterating over the keys in the outgoing request trailer map (pr.Out.Trailer) and setting their values to nil before the request is processed by the transport layer.

This fix is implemented in pkg/proxy/httputil/proxy.go. Setting values to nil conforms to RFC 9112 Section 7.1.2 by stripping values, while keeping the keys preserves metadata hints as outlined in RFC 9110 Section 6.6.2.

The following diff demonstrates the implemented fix within the proxy builder request rewriter:

// pkg/proxy/httputil/proxy.go
// Forward the declared request trailer names, but never their values: they arrive
// after the header section, once routing and security decisions are made, and would
// otherwise reach the backend under a name sanitized in the header section.
// Discarding them is allowed by https://www.rfc-editor.org/rfc/rfc9112#section-7.1.2,
// and the names are kept as the hint of what was dropped described in
// https://www.rfc-editor.org/rfc/rfc9110#section-6.6.2
// Emptying the outgoing map is what makes this hold whatever the middleware chain did
// to the incoming request, as the transport only writes pr.Out.Trailer.
// Response trailers are unaffected.
for name := range pr.Out.Trailer {
	pr.Out.Trailer[name] = nil
}

Exploitation

Exploiting this flaw requires three primary conditions: Traefik must execute body-buffering or retry middleware, the targeted upstream backend must merge trailers into the header namespace, and the backend must make trust decisions based on those headers.

An attacker crafts an HTTP/1.1 or HTTP/2 request targeting an entrypoint protected by Traefik. The header section contains harmless metadata, but the request body includes a trailer payload carrying sensitive security keys.

When Traefik's buffering mechanism executes, Go's parser extracts the trailer content. The proxy forwards the completed request structure downstream. The backend parses the incoming trailer payload and updates its local header registry, overwriting previous security filters.

For example, an attacker can smuggle an X-Forwarded-For: 127.0.0.1 payload inside an HTTP chunked trailer:

POST /secure-endpoint HTTP/1.1
Host: vulnerable-app.com
Transfer-Encoding: chunked
Trailer: X-Forwarded-For
 
9
body data
0
X-Forwarded-For: 127.0.0.1

Impact Assessment

The security impact of this vulnerability is high in environments where internal routing, authentication, or authorization rely on reverse proxy headers. Bypassing entrypoint filters allows attackers to bypass IP blocklists, spoof origins, or inject administrative header values.

The vulnerability is assigned a CVSS v4.0 score of 7.0. The attack vector is Network, and attack complexity is classified as High because it requires specific backend merger behaviors and Traefik middleware configurations.

While Traefik itself is not compromised, the downstream systems are exposed to unauthorized privilege escalation. No known in-the-wild exploitation is documented at this time, but proof-of-concept coverage has been established in regression testing suites.

Remediation and Mitigation

The primary remediation strategy is upgrading Traefik to version v3.7.13 or newer. This version implements explicit trailer clearing to block values from traversing downstream boundaries.

When immediate patching is unfeasible, administrators should review downstream application environments. Disabling automatic trailer merging at the backend server (e.g., within application frameworks or reverse proxy agents) stops the attack at the destination layer.

Additionally, organizations should avoid authentication strategies that depend solely on the existence of a specific header. Validating header values against cryptographic tokens or signatures provides defense-in-depth security.

> [!NOTE] > While Traefik v3.7.13 strips trailer values, it still forwards trailer keys set to nil to conform to RFC 9110 metadata guidelines. Systems checking only the presence of a header key remain vulnerable to empty-value spoofing.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

Traefik deployments with buffering or retry middlewares enabled

Affected Versions Detail

Product
Affected Versions
Fixed Version
Traefik
Traefik
>= 3.2.0, < 3.7.13v3.7.13
AttributeDetail
CWE IDCWE-436 / CWE-807
Attack VectorNetwork
CVSS v4.0 Score7.0 (High)
Exploit Statuspoc
CISA KEV StatusNot Listed
Patch StatusPatched in v3.7.13

MITRE ATT&CK Mapping

T1036Masquerading
Defense Evasion
T1564Hide Artifacts
Defense Evasion
T1190Exploit Public-Facing Application
Initial Access
CWE-436
Interpretation Conflict

This weakness occurs when two security or transport entities interpret an HTTP request or its fields differently, leading to a bypass of security filters.

Vulnerability Timeline

Vulnerability fix commit submitted
2026-09-03
GitHub Security Advisory and CVE-2026-88004 published
2026-09-10
Traefik version 3.7.13 released
2026-09-10

References & Sources

  • [1]Official GitHub Security Advisory
  • [2]Vulnerability Fix Pull Request
  • [3]Official Git Fix Commit
  • [4]Traefik Release Tags (v3.7.13)
  • [5]CVE-2026-88004 NVD Listing
  • [6]CVE-2026-88004 CVE.org Authoritative Record

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

•1 day ago•CVE-2026-115895
8.8

CVE-2026-115895: Code Injection via Unsanitized Import Alias in Happy DOM ECMAScript Module Compiler

CVE-2026-115895 is a high-severity code injection vulnerability (CWE-94) in the happy-dom npm package prior to version 21.0.4. The vulnerability exists within the ECMAScriptModuleCompiler component, which transforms ECMAScript module syntax into executable Node.js functions when JavaScript evaluation is enabled. Due to an incomplete fix for CVE-2026-33943, the compiler failed to validate local named import aliases against legal JavaScript identifier rules. Attackers supplying crafted module imports—specifically utilizing destructuring default initializers alongside JSON module attributes—can inject arbitrary JavaScript expressions directly into the host Node.js runtime context.

Amit Schendel
Amit Schendel
7 views•10 min read
•1 day ago•CVE-2026-115883
6.0

CVE-2026-115883: Cross-Namespace Access via Dot-Delimited Labels in LangGraph Postgres and SQLite Stores

An improper input validation and authorization bypass vulnerability exists in the LangGraph storage layer affecting langgraph, langgraph-checkpoint-postgres, and langgraph-checkpoint-sqlite. Because relational store implementations serialize namespace tuples into dot-delimited strings without validating labels on read, search, delete, and batch operations, an attacker who controls a namespace label can inject periods (.) to traverse namespace boundaries and access, modify, or delete data belonging to other namespaces.

Amit Schendel
Amit Schendel
8 views•9 min read
•1 day ago•CVE-2026-115886
6.5

CVE-2026-115886: Unauthenticated Server-Side Request Forgery and Unsafe Reflection in MLflow Scorer Evaluation Endpoints

CVE-2026-115886 (GHSA-2wqp-q3c6-ccj5) is a Server-Side Request Forgery (SSRF) and Unsafe Reflection vulnerability in MLflow versions 3.12.0rc0 prior to 3.17.0. Unauthenticated REST API endpoints accept serialized third-party scorer JSON payloads that are dynamically deserialized and reflectively instantiated without sanitizing constructor keyword arguments. When optional dependencies such as trulens and trulens-providers-litellm are installed, attackers can inject egress-steering arguments into the scorer payload, forcing the MLflow server to dispatch outbound HTTP requests to arbitrary internal destinations or cloud metadata services.

Alon Barad
Alon Barad
9 views•10 min read
•1 day ago•CVE-2026-113872
7.5

CVE-2026-113872: Unauthenticated Process Crash in Express Multer via Late Busboy Stream Resumption

CVE-2026-113872 (GHSA-q7qp-rjg7-q26m) is a high-severity denial-of-service vulnerability affecting the multer multipart/form-data upload middleware for Node.js and Express in versions 2.0.0 through 2.4.0. When an endpoint is configured to accept multiple files using an asynchronous fileFilter callback, a crafted, truncated multipart HTTP request can trigger an unhandled error event on the underlying busboy stream parser after request teardown has already completed. Because all error listeners are stripped during teardown, Node.js treats the resulting error event as an uncaught exception and immediately terminates the server process.

Amit Schendel
Amit Schendel
7 views•12 min read
•1 day ago•CVE-2026-115897
2.1

CVE-2026-115897: Cross-Site Scripting via Function Body Boundary Bypass in serialize-javascript

CVE-2026-115897 (also tracked as GHSA-m5mm-p8h7-m29v and aliased as CVE-2026-115754) is a Cross-Site Scripting (XSS) vulnerability in the Yahoo serialize-javascript npm package prior to version 7.1.3. The flaw exists in the regular expression used by escapeFunctionBody() to neutralize HTML script closing tags within serialized JavaScript functions. Because function bodies are sanitized in isolation before structural formatting is applied, a function whose string representation terminates directly with the sequence '</script' bypasses the positive lookahead check. When combined with serialization formatting options that introduce whitespace delimiters and a subsequent property that supplies a closing bracket, an attacker can prematurely terminate an enclosing HTML <script> block and inject arbitrary HTML or JavaScript into the rendered document.

Amit Schendel
Amit Schendel
7 views•13 min read
•1 day ago•CVE-2026-109841
5.9

CVE-2026-109841: Subresource Integrity Verification Bypass in Node.js Undici

CVE-2026-109841 is a Subresource Integrity (SRI) verification bypass vulnerability in undici, the official HTTP/1.1 and HTTP/2 client library for Node.js that powers the global fetch() implementation. The flaw stems from improper handling of case sensitivity (CWE-178) when validating cryptographic hash algorithm tokens within SRI metadata. Because undici compared incoming algorithm identifiers against a strictly lowercase set without prior ASCII-lowercase normalization, valid uppercase or mixed-case tokens such as SHA256- or Sha384- were treated as unrecognized algorithms and discarded. Under SRI forward-compatibility rules, discarding all provided tokens results in an empty integrity list, causing undici to fail open and accept tampered HTTP response bodies without cryptographic verification.

Alon Barad
Alon Barad
11 views•9 min read