Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Skipper proxy using opaAuthorizeRequestWithBody filter
-
DeliveryCraft POST body with forbidden payload padded beyond 1 MB size limit
-
ExploitSend request with oversized Content-Length header
-
ExecutionExtractHttpBodyOptionally skips body read, returns nil to OPA
-
PersistOPA evaluates empty parsed_body, deny-on-presence policy passes
-
ImpactFull forbidden payload forwarded to upstream service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Unusual condition handling
|
| Exploitation Conditions | Exploitation requires ALL of the following conditions simultaneously: (1) Skipper is deployed with the |
| Impact | The NVD-assigned CVSS vector (AV:N/AC:L/PR:N/UI:N/C:H/I:L) overstates the impact profile in two ways: complexity is genuinely high because exploitation requires the specific combination of |
| Exploit ScenarioDerived | An attacker targeting a microservice protected by a Skipper proxy configured with |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 15, 2026
Authorization bypass in Zalando Skipper's opaAuthorizeRequestWithBody filter allows unauthenticated remote attackers to deliver forbidden request bodies to upstream services by inflating the declared Content-Length beyond the configured OPA body-size limit. When a body exceeds -open-policy-agent-max-request-body-size (default 1 MB), ExtractHttpBodyOptionally skips body extraction and returns nil bytes to OPA, causing deny-on-presence Rego policies to evaluate an empty parsed_body and fail open, while the complete forbidden payload is still forwarded upstream unchanged. This is an incomplete remediation of CVE-2026-50197 - the prior fix addressed only chunked/HTTP-2 requests with negative Content-Length; the oversized Content-Length path was never considered. No public exploit has been identified at time of analysis, though the GHSA advisory includes a working reproduction harness.
RemediationAI
Upgrade Zalando Skipper to v0.27.35 or later, available at https://github.com/zalando/skipper/releases/tag/v0.27.35 and via the Go module path github.com/zalando/skipper. The fix is implemented in commit 2cfceabaa6ff0af65b312dcb9bcbe84691b9d507, which adds accurate body-truncation signaling through the bodyTruncated flag passed to AdaptToExtAuthRequest and surfaced to OPA as the x-envoy-auth-partial-body header and input.attributes.request.http.truncated_body attribute. As a compensating control before patching, audit all Rego policies that use deny-on-presence logic against input.parsed_body and add an explicit guard: allow = false if { not input.attributes.request.http.truncated_body; input.parsed_body.action == 'delete' } - this forces OPA to reject requests where the body was truncated rather than allowing them through. Alternatively, lower -open-policy-agent-max-request-body-size to a value larger than any legitimate request body to avoid triggering the truncation path, though this increases memory pressure. Blocking oversized bodies at an upstream WAF or load balancer before they reach Skipper is also effective but must be sized consistently with the OPA limit. The full vendor advisory is at https://github.com/zalando/skipper/security/advisories/GHSA-8qqm-fp2q-v734.
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 (cpe:2.3:a:zalando:skipper) is a cloud-native Go HTTP router and reverse proxy used for service mesh/API gateway compositions. Its opaAuthorizeRequestWithBody filter integrates Open Policy Agent (OPA) to authorize requests based on body content using the Envoy ext-authz gRPC interface. The affected logic is in filters/openpolicyagent/openpolicyagent.go in ExtractHttpBodyOptionally: when req.ContentLength > maxBodyBytes, the conditional gate expectedSize <= maxBodyBytes evaluates false and the function returns (req.Body, nil, func(){}, nil) - the nil rawBodyBytes - causing OPA to receive an empty parsed_body document. CWE-754 (Improper Check for Unusual or Exceptional Conditions) is the correct root-cause class: the code properly handles the chunked/negative-ContentLength case introduced by the prior fix but fails to handle the equally exceptional oversized-positive-ContentLength case. The x-envoy-auth-partial-body / input.attributes.request.http.truncated_body signal is also absent from the OPA request, so policies that would gate on body truncation cannot do so. The commit 2cfceabaa6ff0af65b312dcb9bcbe84691b9d507 adds the bodyTruncated bool parameter to AdaptToExtAuthRequest and propagates it as the x-envoy-auth-partial-body header, ensuring OPA receives accurate truncation metadata.
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:H/I:L/A:N
AC:H reflects multiple required configuration preconditions; I:H captures authorization bypass allowing forbidden operations upstream; C:L acknowledges indirect disclosure risk.
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 0.27.35, the opaAuthorizeRequestWithBody filter in filters/openpolicyagent/openpolicyagent.go can allow an oversized declared Content-Length request to bypass a deny-on-presence Rego policy because ExtractHttpBodyOptionally leaves OPA with an empty parsed_body while forwarding the complete request body upstream. This incomplete remediation of CVE-2026-50197 affects deployments that authorize request-body content and exceed -open-policy-agent-max-request-body-size, which defaults to 1 MB. Policy logic that does not reject input.attributes.request.http.truncated_body can therefore fail open and permit a forbidden payload to reach the protected service, while small bodies and the previously fixed chunked-body case are evaluated normally. This issue is fixed in version 0.27.35.
Technical POC Analysis
CWE-754 (Improper Check for Unusual or Exceptional Conditions).
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's OPA authorization filter contains a vulnerability that allows unauthenticated remote attackers to bypass API authorization and deliver forbidden request bodies to upstream services, with no public exploit identified at time of analysis. Organizations using Skipper as a reverse proxy with OPA-based access controls face exposure to unauthorized backend access from external attackers. This represents a critical failure of API security controls that could enable unauthorized data access or business operation disruption.
Apply vendor patch.
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
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
Skipper versions up to 0.24.0 contains a vulnerability that allows attackers to list targets of an ExternalName and allo
Authorization bypass in Zalando Skipper before 0.27.37 lets unauthenticated remote attackers slip an oversized request b
EUVD-2026-78059
GHSA-8qqm-fp2q-v734
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB