Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Skipper route with OPA body authorization
-
DeliveryCraft forbidden payload (e.g. action=delete)
-
ExploitPad body past maxBodyBytes Content-Length
-
ExecutionOPA evaluates empty parsed_body, allows request
-
PersistFull payload forwarded to upstream
-
ImpactForbidden action executed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Exploitation requires the target to run Skipper as an OPA-authorizing proxy using the opaAuthorizeRequestWithBody filter with a configured maxBodyBytes/WithMaxRequestBodyBytes limit and a deny-on-presence Rego policy (default allow = true; allow = false if input.parsed_body.<forbidden>). The concrete trigger is a request whose declared Content-Length exceeds maxBodyBytes, which causes ExtractHttpBodyOptionally to return a nil body and OPA to evaluate an empty parsed_body while the full payload is forwarded upstream. Per the CVSS vector (AV:N/AC:L/PR:N/UI:N) the attacker needs no authentication and no user interaction, so the sole limiting factor is this non-default body-based authorization configuration; deployments not authorizing on body content are unaffected. |
| Impact | The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, base 8.8) indicates a network-reachable, low-complexity, unauthenticated attack, which is consistent with the described technique of simply inflating the request body. No EPSS score, KEV entry, or SSVC decision was provided, so probability-of-exploitation and automatability cannot be quantified from this data; there is no evidence of active exploitation. The practical risk is gated by deployment: it only matters where Skipper uses opaAuthorizeRequestWithBody with deny-on-presence Rego policies and a maxBodyBytes limit - a non-default authorization pattern. Where that pattern exists, real risk is high because exploitation is trivial and the advisory ships a working PoC, but the population of affected deployments is narrower than the raw 8.8 suggests. Note a conflict between vendor VC:H (confidentiality) and the actual described impact, which is primarily unauthorized forbidden actions reaching upstream (an integrity/authorization-bypass effect) - verify the impact type against your specific policies. |
| Exploit ScenarioDerived | An attacker targets an API endpoint that Skipper protects with an OPA body-content policy (for example, deny requests where parsed_body.action == "delete"). They send the forbidden JSON payload but append padding so the declared Content-Length exceeds maxBodyBytes; OPA sees an empty parsed_body and allows the request while the full "delete" payload reaches and is executed by the upstream service. A working docker-compose PoC (setup.sh/exploit.sh) is included in the GHSA advisory, and given AV:N/AC:L/PR:N the attack requires only a single crafted HTTP request. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Authorization bypass in Zalando Skipper (all versions through 0.27.25) lets remote unauthenticated attackers evade Open Policy Agent body-content authorization by padding a request past the configured maxBodyBytes limit. Because Skipper forwards the oversized payload upstream while handing OPA an empty parsed_body, deny-on-presence Rego policies fail open and forbidden actions execute. This is an incomplete fix for CVE-2026-50197; publicly available exploit code exists (docker-compose PoC in the GHSA advisory), but there is no public evidence of active exploitation and no code-level fix - v0.27.26 only adds documentation.
RemediationAI
No vendor-released code patch identified at time of analysis: v0.27.26 adds documentation guidance only and does not close the oversized-body branch, so upgrading alone does not fix the bypass. The actionable compensating control per the advisory is to harden your Rego so it fails closed on truncation - explicitly check input.attributes.request.http.truncated_body and deny (or treat as forbidden) whenever the body was truncated, rather than relying solely on input.parsed_body presence; side effect: legitimate oversized requests to body-authorized routes will now be rejected. Additionally, cap request body size at the ingress/proxy edge so bodies cannot exceed maxBodyBytes on authorized routes (trade-off: breaks legitimate large uploads on those paths), and audit every opaAuthorizeRequestWithBody route for deny-on-presence patterns. Track the vendor advisory GHSA-8qqm-fp2q-v734 (https://github.com/zalando/skipper/security/advisories/GHSA-8qqm-fp2q-v734) for a future code fix.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Skipper is Zalando's open-source HTTP router and reverse proxy, widely used as a Kubernetes ingress controller and API gateway, and it can delegate authorization to an embedded Open Policy Agent (OPA) engine via the opaAuthorizeRequestWithBody filter. That filter is supposed to parse the request body and expose it to Rego as input.parsed_body so policies can allow/deny based on content. The root cause is CWE-20 (improper input validation) in filters/openpolicyagent/openpolicyagent.go: the CVE-2026-50197 fix (commit 3152f3b0, PR #4041, v0.26.10) only substituted expectedSize = maxBodyBytes when req.ContentLength < 0 (chunked/HTTP2), but when a declared Content-Length exceeds maxBodyBytes, expectedSize > maxBodyBytes, the body-extraction branch is skipped, and ExtractHttpBodyOptionally returns rawBodyBytes = nil. OPA therefore evaluates an empty document while the full body still reaches upstream. CPE cpe:2.3:a:zalando:skipper:*:*:*:*:*:*:*:* covers the affected package go/github.com/zalando/skipper.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Unauthenticated remote body-padding trivially bypasses authorization (PR:N/AC:L), letting forbidden actions execute upstream (I:H); confidentiality only incidental (C:L) and no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Skipper contains an incomplete fix for CVE-2026-50197 in which oversized request bodies bypass Open Policy Agent (OPA) deny-on-presence Rego policies. When a request body exceeds the configured maxBodyBytes limit, Skipper forwards the full payload to the upstream service while OPA evaluates against an empty parsed_body, so policies that deny requests based on body content are not enforced and forbidden actions proceed. No fixed version is available; v0.27.26 adds documentation guidance only.
Executive ViewAI
Zalando Skipper (all versions through 0.27.25), a critical API gateway for enforcing authorization policies, contains an authorization bypass flaw allowing unauthenticated attackers to evade Open Policy Agent security controls by padding requests past configured limits. An attacker can craft oversized requests that cause Skipper to forward the full payload upstream while OPA receives an empty body, enabling unauthorized access to protected APIs and data. No code-level patch is currently available, placing all affected deployments at immediate risk.
Apply request size validation at Skipper ingress or upstream reverse proxy to enforce maxBodyBytes limits and reject oversized requests; harden Open Policy Agent policies to explicitly deny-by-default rather than failing open; implement WAF rules to detect and block requests with suspicious padding patterns.
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.
Affected Products (CPE)CVE.org
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'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
Authorization bypass in Zalando Skipper before 0.27.37 lets unauthenticated remote attackers slip an oversized request b
EUVD-2026-48437
GHSA-p75f-h73c-3rcp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB