Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend oversized chunked/HTTP2 request without Content-Length
-
ExploitSkipper truncates body but signals truncated_body=false
-
ExecutionOPA policy authorizes truncated prefix
-
ImpactFull oversized body forwarded to protected upstream
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires Skipper deployed with the opaAuthorizeRequestWithBody filter and an Open Policy Agent policy that inspects the request body AND explicitly allows requests when input.truncated_body == false (the recommended prior mitigation for CVE-2026-50197). The attacker must send a body exceeding the configured maxBodyBytes using HTTP/1.1 Transfer-Encoding: chunked or an HTTP/2 request that omits Content-Length, so Skipper's truncated-body signal (derived from Content-Length) reads false. Limiting factors: this is a non-default configuration - installations that do not use OPA body authorization, or whose policies do not key on truncated_body, are unaffected; requests that carry an accurate Content-Length are correctly flagged as truncated and denied. |
| Impact | This is a genuine unauthenticated remote authorization bypass (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N, CWE-863), but its real-world risk is materially narrower than the 7.5 base score implies because exploitation is heavily gated on a specific, non-default deployment. It only bites when Skipper is configured with the opaAuthorizeRequestWithBody filter AND the Open Policy Agent policy inspects the body and permits requests where input.truncated_body == false - i.e. a policy that already followed the prior CVE-2026-50197 mitigation. No EPSS score, KEV entry, or standalone public exploit was provided, so this is 'no public exploit identified at time of analysis'; however, the fix commit (2cfceabaa6) ships a reproducing test (TestTruncatedBodyChunkedBypass) that demonstrates the bypass, lowering the bar for weaponization. Conflicting signal to verify: the CVSS I:H rates the integrity impact as total, but the actual damage is bounded by what the protected upstream does with an oversized body that slipped past a size/content policy - the base I:H is defensible for a bypassed authorization control but the concrete impact is upstream-dependent. Net: this is a real priority ONLY for shops running Skipper's OPA body-authorization filter with truncation-aware policies; for everyone else it is a high-CVSS-but-low-real-risk item. |
| Exploit ScenarioDerived | An attacker sends a POST to a Skipper-fronted service using Transfer-Encoding: chunked (or HTTP/2 with no Content-Length) carrying a body larger than maxBodyBytes. Skipper truncates the body to the limit but, because input.truncated_body is derived from the (absent/unreliable) Content-Length rather than the actual read, the OPA policy sees truncated_body == false, evaluates only the truncated prefix, and authorizes the request - after which the full oversized body is forwarded to the protected upstream. A reproducing test case exists in the public fix commit, though no separate weaponized exploit was reported. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Authorization bypass in Zalando Skipper before 0.27.37 lets unauthenticated remote attackers slip an oversized request body past an Open Policy Agent body-inspection policy: when the opaAuthorizeRequestWithBody filter truncates the body at maxBodyBytes, Skipper derives the input.truncated_body signal from Content-Length rather than the bytes actually read, so an HTTP/1.1 chunked or Content-Length-less HTTP/2 request is evaluated by OPA as non-truncated, allowed, and then forwarded in full to the protected upstream (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N, CWE-863). Exploitation is gated on a non-default deployment: the filter must be active and the policy must explicitly allow requests when input.truncated_body == false, the pattern recommended as the prior mitigation for CVE-2026-50197, while installations that do not inspect bodies or do not key on truncated_body are unaffected and requests carrying an accurate Content-Length are correctly flagged as truncated and denied. No public exploit identified at time of analysis.
RemediationAI
Upgrade to Skipper 0.27.37, the release that contains the vendor fix (Vendor-released patch: 0.27.37); the upstream code change is commit 2cfceabaa6ff0af65b312dcb9bcbe84691b9d507, which introduces the x-envoy-auth-partial-body header so policies can trust the truncation signal, and the advisory is at https://github.com/zalando/skipper/security/advisories/GHSA-5gpm-rgj3-9q76. If upgrading is not immediately possible, do not rely on input.truncated_body alone: rewrite OPA policies so that authorization requires a request with a valid Content-Length that is both present and not greater than maxBodyBytes, or reject any request whose body exceeds maxBodyBytes regardless of the truncated_body value; as an alternative compensating control, block Transfer-Encoding: chunked and HTTP/2 requests without Content-Length at the router or edge - the trade-off is that legitimate streaming or chunked uploads and some HTTP/2 clients will break. Lowering maxBodyBytes and enforcing the same body-size limit at the upstream narrows but does not eliminate the bypass window, and disabling the opaAuthorizeRequestWithBody filter removes the exposure at the cost of losing body-based authorization entirely.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Skipper's opaAuthorizeRequestWithBody filter forwards request attributes to an Open Policy Agent external authorization (ext_authz) service for policy evaluation. In filters/openpolicyagent/openpolicyagent.go, ExtractHttpBodyOptionally reads the body and truncates it at the configured maxBodyBytes, but filters/openpolicyagent/internal/envoy/skipperadapter.go copies the original request headers into the ext_authz CheckRequest without adding a Content-Length value that reflects the smaller truncated body. Because the truncated_body input is derived from the Content-Length header rather than the actual read result, a request that omits Content-Length - HTTP/1.1 with Transfer-Encoding: chunked or HTTP/2 without a Content-Length header - presents a false 'not truncated' signal to the policy. A policy that follows the earlier CVE-2026-50197 mitigation, for example 'allow if input.truncated_body == false', then authorizes the request based only on the truncated prefix while Skipper forwards the full oversized body upstream. The root cause is CWE-863 (Incorrect Authorization), a mismatch between the data inspected by the policy and the data delivered to the upstream. The fix in 0.27.37 adds a bodyTruncated boolean to AdaptToExtAuthRequest and sets an x-envoy-auth-partial-body header ('true' or 'false') in the ext_authz request, giving policies a trustworthy truncation signal that is independent of Content-Length.
Know when Skipper gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Remote unauthenticated request with attacker-controlled transfer encoding (AV:N/AC:L/PR:N/UI:N); bypasses a body-authorization control so I:H, with no confidentiality or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Skipper is an HTTP router and reverse proxy for service composition. Prior to version 0.27.37, the opaAuthorizeRequestWithBody filter can authorize an oversized request after Skipper truncates the body presented to Open Policy Agent because the input.truncated_body signal is derived from Content-Length rather than the actual read result. In filters/openpolicyagent/openpolicyagent.go, ExtractHttpBodyOptionally truncates bodies at maxBodyBytes, while filters/openpolicyagent/internal/envoy/skipperadapter.go copies the request headers without adding a Content-Length value that reflects the truncation. For an HTTP/1.1 request using Transfer-Encoding: chunked or an HTTP/2 request without Content-Length, a body-inspecting policy that follows the prior mitigation and permits input.truncated_body equal to false can evaluate only the truncated prefix, allow the request, and then forward the full oversized body to the protected upstream. This residual issue is distinct from CVE-2026-50197. This issue is fixed in version 0.27.37.
Technical POC Analysis
CWE-863 (Incorrect Authorization), with a CWE-444-adjacent Content-Length/Transfer-Encoding confusion underneath.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Zalando Skipper is exposed to an authorization bypass that allows unauthenticated remote attackers to evade Open Policy Agent body-inspection controls and forward oversized requests to protected upstream services. The issue affects only deployments that run Skipper before 0.27.37 and use the opaAuthorizeRequestWithBody filter with a policy that permits requests when the truncated_body signal is false; other configurations are not impacted. Leadership should prioritize identification and mitigation because successful exploitation can undermine access-control enforcement and allow unauthorized payloads to reach sensitive backends, although no public exploit has been identified at time of analysis.
No vendor-released patch identified at time of analysis. Interim mitigations: disable or bypass the opaAuthorizeRequestWithBody filter; modify OPA policy to deny when input.truncated_body is false, absent, or cannot be reliably determined; enforce strict maximum body sizes at the upstream service, API gateway, or WAF; reject HTTP/1.1 chunked requests and HTTP/2 requests without a valid Content-Length for sensitive endpoints; and monitor Skipper and OPA logs for oversized or truncated-body authorization anomalies.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Zalando Skipper v0.13.236 is vulnerable to Server-Side Request Forgery (SSRF). Rated critical severity (CVSS 9.8), this
An arbitrary file upload vulnerability in the file upload module of Skipper v0.9.1 allows attackers to execute arbitrary
Skipper versions before 0.23.0 allow authenticated users with Ingress resource creation privileges to execute arbitrary
In Zalando Skipper before 0.13.218, a query predicate could be bypassed via a prepared request. Rated high severity (CVS
Authorization bypass in Zalando Skipper (all versions through 0.27.25) lets remote unauthenticated attackers evade Open
Authorization bypass in Zalando Skipper's `opaAuthorizeRequestWithBody` filter allows unauthenticated remote attackers t
Skipper versions up to 0.24.0 contains a vulnerability that allows attackers to list targets of an ExternalName and allo
EUVD-2026-81002
GHSA-5gpm-rgj3-9q76
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB