ZeroHour

CVE-2026-65838

niche

Oversized-body authorization bypass in Zalando Skipper's OPA request filter

CVSS 3.1
8.2 high
EPSS
Published
()
Modified
AI analysis

Zalando Skipper, an HTTP router and reverse proxy commonly used as a Kubernetes ingress, incompletely enforces Open Policy Agent (OPA) authorization when a request's declared Content-Length exceeds -open-policy-agent-max-request-body-size, which defaults to 1 MB. In versions prior to 0.27.35, the opaAuthorizeRequestWithBody filter in filters/openpolicyagent/openpolicyagent.go passes OPA an empty parsed_body (via ExtractHttpBodyOptionally) while still forwarding the complete request body upstream, so a deny-on-payload-content Rego policy never sees the offending content and fails open. An unauthenticated remote attacker can abuse this to smuggle a forbidden payload past body-content policy checks to the protected backend service (CVSS 8.2, high confidentiality impact). Only deployments that authorize request bodies with the openpolicyagent filters and can exceed the body-size limit are affected — small bodies and the previously fixed chunked-body case from CVE-2026-50197 are evaluated normally. The flaw is fixed in version 0.27.35; no public proof of concept or in-the-wild exploitation is known.

What to do: Upgrade Skipper to version 0.27.35 or later. As defense-in-depth, update Rego policies to explicitly deny requests where input.attributes.request.http.truncated_body is true, and audit logs for oversized-body requests that were authorized since the earlier CVE-2026-50197 fix. Verify whether any routes rely on opaAuthorizeRequestWithBody or other openpolicyagent filters that inspect request bodies.

Affected
Zalando Skipperall versions prior to 0.27.35 (specifically deployments using the openpolicyagent filters that evaluate request bodies)
Estimated exposure
nichelikely hundreds to low thousands of deployments (the subset of Skipper installations using OPA body-content authorization) — Skipper is a relatively niche open-source Kubernetes ingress/router with no published install counts, and the vulnerable code path additionally requires the OPA request-body authorization filter, so the exposed population is a small…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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.

Weakness
CWE-754
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N

In the news

No ingested article mentions this CVE yet.