Skip to main content

Skipper CVE-2026-65604

| EUVDEUVD-2026-48437 HIGH
Improper Input Validation (CWE-20)
2026-07-23 VulnCheck GHSA-p75f-h73c-3rcp
8.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Skipper route with OPA body authorization
  2. Delivery
    Craft forbidden payload (e.g. action=delete)
  3. Exploit
    Pad body past maxBodyBytes Content-Length
  4. Execution
    OPA evaluates empty parsed_body, allows request
  5. Persist
    Full payload forwarded to upstream
  6. Impact
    Forbidden 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (VulnCheck) PRIMARY 8.8 HIGH
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
vuln.today AI 8.2 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Medium
popular open-source Kubernetes ingress/proxy, but OPA-body-authz config is niche
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Affected Products (CPE)CVE.org

cpe:2.3:a:zalando:skipper:*:*:*:*:*:*:*:*

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy