Skipper: Incomplete fix for CVE-2026-50197: an oversized body can bypass OPA deny-on-presence Rego policies
### Summary A wrong policy can be an open door. You have to check `input.attributes.request.http.truncated_body` in your policy. ### Description Incomplete fix for CVE-2026-50197: an oversized declared-`Content-Length` body still hands OPA an empty `parsed_body`, so deny-on-presence Rego policies fail OPEN while the full payload reaches upstream. The CVE-2026-50197 fix (commit `3152f3b0`, PR #4041, v0.26.10) substituted `expectedSize = maxBodyBytes` only when `req.ContentLength < 0` (chunked / HTTP/2 without content-length). But when a request declares a `Content-Length` larger than `maxBodyBytes`, `expectedSize > maxBodyBytes`, the body-extraction `if` is skipped entirely, and `ExtractHttpBodyOptionally` returns `rawBodyBytes = nil` — so OPA evaluates an empty `parsed_body`, while the full forbidden payload still flows to the upstream. A deny-on-presence policy (`default allow = true; allow = false if input.parsed_body.`) — the exact Rego shape the advisory describes — fails OPEN. The fix's own comment reasons only about `ContentLength == -1`; the oversized branch was never considered, and the added PoC test only covers small bodies. ### Affected code - `filters/openpolicyagent/openpolicyagent.go` `ExtractHttpBodyOptionally`: the `expectedSize <= maxBodyBytes` gate lets an oversized declared body fall through to `return req.Body, nil, func() {}, nil` (OPA sees an empty document). - Corroborated by Skipper's own unit test "Read body exhausting max bytes" (`{ "welcome": "world
GHSA-8qqm-fp2q-v734
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:GHSA-8qqm-fp2q-v734
github.com/zalando/skipper
Source reference: /affected/0/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- 0.27.26
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "0.27.26"
}
]
}
],
"package": {
"name": "github.com/zalando/skipper",
"purl": "pkg:golang/github.com/zalando/skipper",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-8qqm-fp2q-v734/GHSA-8qqm-fp2q-v734.json"
}
}
]- Related CVEs
- CVE-2026-65838
Source reference:
/aliases
Publisher severity
high
Source reference: /database_specific/severity
- Event
- #17534 · Revision 1
- Added to Heist Feed
- Publisher date