Summary
CVE-2026-65838 is a high-severity authorization bypass vulnerability in Zalando Skipper, an HTTP router and reverse proxy used for service composition. Skipper versions prior to 0.27.35 can forward an oversized request body to upstream services while presenting Open Policy Agent (OPA) with an empty parsed body, causing deny-on-presence Rego policies to fail open. The issue carries a CVSS v3.1 base score of 8.2 (High) and represents an incomplete fix for an earlier vulnerability, CVE-2026-50197.
Technical details
- Root cause: The
opaAuthorizeRequestWithBodyfilter (infilters/openpolicyagent/openpolicyagent.go) relies onExtractHttpBodyOptionallyto read the request body before handing it to OPA for policy evaluation. When a client declares aContent-Lengthlarger than the configured-open-policy-agent-max-request-body-sizelimit (default 1 MB), body extraction is skipped and OPA receives a nil/empty body. - Trigger conditions: An attacker sends a request with a declared
Content-Lengththat exceeds the configured maximum body size while Skipper is configured to authorize requests via OPA based on inspecting the request body (deny-on-presence policies). - Attack vector: Network, no authentication or user interaction required (AV:N/AC:L/PR:N/UI:N).
- Impact: OPA evaluates the policy against an empty
parsed_body, so content-based deny rules do not trigger, yet the full, unmodified oversized payload is still forwarded to the protected upstream service. This allows forbidden or malicious content to reach backend services, undermining authorization controls. The original fix for CVE-2026-50197 only addressed bodies with unknown length (chunked encoding/HTTP/2); this issue closes the remaining gap for declared oversizedContent-Lengthbodies.
Affected software
- Zalando Skipper versions prior to 0.27.35 that use the OPA (Open Policy Agent) integration for request-body-based authorization.
Severity
- CVSS v3.1 Base Score: 8.2 (High)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
Mitigation and recommended actions
- Immediate: Upgrade Zalando Skipper to version 0.27.35 or later, which fixes the body-handling logic.
- If patching is not immediately possible: Update Rego policies to explicitly check the
input.attributes.request.http.truncated_bodyflag and reject requests where it is set, ensuring oversized or truncated bodies are denied rather than silently passed through. Review and tighten the-open-policy-agent-max-request-body-sizesetting in line with expected traffic to reduce exposure.

