CVE-2026-86043
nicheAuthorization bypass in Skipper opaAuthorizeRequestWithBody via oversized request bodies
Skipper, an HTTP router and reverse proxy for service composition, contains an authorization flaw in its opaAuthorizeRequestWithBody filter: when a request body exceeds maxBodyBytes it is truncated before being sent to Open Policy Agent, but the input.truncated_body signal passed to OPA is derived from Content-Length rather than the actual bytes read. An attacker can trigger this by sending an HTTP/1.1 request with Transfer-Encoding: chunked or an HTTP/2 request without a Content-Length header, since skipperadapter.go copies the request headers without updating Content-Length to reflect the truncation. A body-inspecting OPA policy that follows the prior CVE-2026-50197 mitigation and permits requests with truncated_body equal to false will evaluate only the truncated prefix, allow the request, and Skipper then forwards the full oversized body to the protected upstream. An attacker gains a bypass of body-content-based authorization, letting unvetted oversized payloads reach backend services (integrity impact, no confidentiality or availability loss per the CVSS score). Any Skipper deployment before 0.27.37 using the OPA authorization filter with body truncation is affected; no public proof-of-concept or known exploitation exists, and the flaw is fixed in version 0.27.37.
What to do: Upgrade to Skipper 0.27.37 or later, which fixes the truncated_body signal handling. As an interim mitigation, update OPA policies to deny requests using Transfer-Encoding: chunked or lacking Content-Length when the opaAuthorizeRequestWithBody filter inspects bodies, or enforce a hard body-size limit so oversized requests are rejected rather than truncated. Operators who relied on the CVE-2026-50197 mitigation (permitting only truncated_body == false) should audit those policies for requests without Content-Length.
| Skipper (open-source HTTP router/reverse proxy) Skipper (filters/openpolicyagent opaAuthorizeRequestWithBody filter) | all versions prior to 0.27.37 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Skipper is an HTTP router and reverse proxy for service composition. Prior to version 0.27.37, the opaAuthorizeRequestWithBody filter can authorize an oversized request after Skipper truncates the body presented to Open Policy Agent because the input.truncated_body signal is derived from Content-Length rather than the actual read result. In filters/openpolicyagent/openpolicyagent.go, ExtractHttpBodyOptionally truncates bodies at maxBodyBytes, while filters/openpolicyagent/internal/envoy/skipperadapter.go copies the request headers without adding a Content-Length value that reflects the truncation. For an HTTP/1.1 request using Transfer-Encoding: chunked or an HTTP/2 request without Content-Length, a body-inspecting policy that follows the prior mitigation and permits input.truncated_body equal to false can evaluate only the truncated prefix, allow the request, and then forward the full oversized body to the protected upstream. This residual issue is distinct from CVE-2026-50197. This issue is fixed in version 0.27.37.
- Weakness
- CWE-863
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
In the news0 stories
No ingested article mentions this CVE yet.