CVE-2026-86043
HighCVSS 7.5Summary
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.
Risk Assessment
An attacker can bypass content inspection and send oversized requests to protected services, potentially leading to unauthorized access or system overload.
Recommendation
It is recommended to immediately upgrade Skipper to version 0.27.37 or later to eliminate this vulnerability.
Other vulnerabilities in Skipper
See all- CVE-2022-27262Critical
An arbitrary file upload vulnerability in the file upload module of Skipper v0.9.1 allows attackers to execute arbitrary code via a crafted file.
- CVE-2026-65838High
Skipper before 0.27.35 has a vulnerability in the opaAuthorizeRequestWithBody filter that allows bypassing deny-on-presence Rego policies for requests with oversized declared Content-Length when the body exceeds the size limit.
- CVE-2026-54247Medium
In Skipper prior to 0.26.22, the Handler in dataclients/kubernetes/admission/admission.go passes request bodies to the Kubernetes admission endpoint at :9443/admission directly to io.ReadAll(r.Body) without a size limit. An attacker with in-cluster network access and a valid Kubernetes client certificate can send a very large body, causing unbounded memory allocation and an out-of-memory termination of the Skipper process.
- CVE-2026-54246Medium
Skipper before version 0.27.13 exposes cluster-wide control-plane data via /routes, /routes/{zone}, /swarm/redis/shards, and /swarm/valkey/shards without application-layer authentication. The handlers only restrict HTTP methods and do not authenticate callers. A compromised pod can bypass namespace-scoped RBAC and read sensitive data across namespaces.
- CVE-2026-65604High
Skipper has an incomplete fix for CVE-2026-50197 where oversized request bodies bypass Open Policy Agent (OPA) deny-on-presence policies. When the request body exceeds the maxBodyBytes limit, Skipper forwards the full payload to the upstream service while OPA evaluates an empty parsed_body, allowing forbidden actions.
- CVE-2026-50197High
Vulnerability in Skipper (HTTP router and reverse proxy) before version 0.26.10 allows bypassing request body inspection for HTTP/1.1 Transfer-Encoding: chunked and HTTP/2 requests without content-length header via OpenPolicyAgent integration. Attacker can send malicious data that is not inspected but reaches the upstream service.
Original NVD description (English source)
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.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

