CVE-2026-54247

MEDIUMPre-NVD 4.34.3
EchelonGraph scoreLOW confidence

This medium-severity CVE scores 4.3 under the CNA's CVSS (NVD's own analysis pending). EPSS exploit-prediction score not yet available (the EPSS model rescores nightly; freshly-published CVEs typically appear within 48 hours). GitHub Security Advisory data not yet ingested — confidence will rise once GHSA publishes (typical lag: hours to days for open-source ecosystem CVEs; never for infrastructure-only CVEs).

Triggered by: NVD CVSS baseline
Sources: cna:github_m
4.3EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: CVSS: 4.3Exploit: None knownExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

Skipper: Unbounded Request Body Read in Admission Webhook Causes Memory Exhaustion DoS

Summary

The Kubernetes admission webhook handler reads the entire request body using io.ReadAll(r.Body) without any size limit. Any client that can reach the webhook port within the cluster can send a multi-GB payload, causing the skipper process to exhaust memory and be OOM-killed. This disrupts all Kubernetes admission control, potentially blocking all pod creation and updates.

Vulnerable Code

// dataclients/kubernetes/admission/admission.go:76
body, err := io.ReadAll(r.Body)  // <-- NO SIZE LIMIT
if err != nil {
    log.Errorf("Failed to read request: %v", err)
    w.WriteHeader(http.StatusInternalServerError)
    invalidRequests.WithLabelValues(admitterName).Inc()
    return
}

var review admissionReview err = json.Unmarshal(body, &review)

For comparison, the OPA filter has a body size limit:

// filters/openpolicyagent/openpolicyagent.go:68-70
const DefaultMaxRequestBodySize = 1 << 20 // 1MB

// OPA uses a bufferedBodyReader with size limits

Attack Path

  • Attacker identifies the admission webhook endpoint (default: :9443/admission or configured path)
  • Attacker sends: POST /admission HTTP/1.1, Content-Type: application/json with a multi-GB request body
  • io.ReadAll(r.Body) allocates unbounded memory for the entire body
  • Skipper process is OOM-killed by the Kubernetes kubelet

Permission Boundary Analysis

  • Attacker: Any client with network access to the admission webhook port within the Kubernetes cluster
  • Boundary crossed: Memory safety — unbounded allocation from attacker-controlled input
  • Preconditions: Admission webhook endpoint must be network-reachable (default Kubernetes deployment exposes it within cluster network)
  • Comparison: OPA filter has DefaultMaxRequestBodySize (1MB) and semaphore-based memory limit; admission handler has neither

Evidence

| File | Lines | Description | |------|-------|-------------| | dataclients/kubernetes/admission/admission.go | 76 | io.ReadAll(r.Body) without size limit | | filters/openpolicyagent/openpolicyagent.go | 68-70 | OPA filter has DefaultMaxRequestBodySize = 1MB | | filters/openpolicyagent/openpolicyagent.go | 1333-1336 | OPA uses bufferedBodyReader with size limits |

Tests

  • dataclients/kubernetes/admission/admission_test.go exists but does not test body size limits

Impact

The admission webhook handler reads the entire request body using io.ReadAll(r.Body) without a size limit. An attacker with in-cluster network access and a valid Kubernetes client certificate can send a multi-GB payload to the webhook endpoint, causing the skipper process to exhaust memory and be OOM-killed. This disrupts admission control for Ingress and RouteGroup resources until the process is automatically restarted by the kubelet.

Scope of impact: Ingress and RouteGroup admission only — not pod creation or other admission controllers.

Recovery: Kubernetes automatically restarts the OOM-killed process, limiting downtime.

Prerequisites: (1) In-cluster network access to the webhook port, (2) valid Kubernetes client certificate.

Mitigation

  • Add http.MaxBytesReader or equivalent body size limit before io.ReadAll
  • Follow the OPA filter pattern: define DefaultMaxRequestBodySize and use a buffered reader with size limits
  • Add a configurable --admission-max-body-size flag

CVSS v3
4.3
EG Score
4.3(low)
EG Risk
24(Track)
EG Risk 24/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity43% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
EPSS %ILE
KEV
Not listed

Published

July 17, 2026

Last Modified

July 17, 2026

Vendor Advisories for CVE-2026-54247(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Affected Packages

(1 across 1 ecosystem)
Go(1)
PackageVulnerable rangeFixed inDependents
github.com/zalando/skipper0.26.22

Data Freshness Timeline

(refreshed 2× in last 7d / 3× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-26 11:18 UTCEG score recompute
  2. 2026-07-23 03:19 UTCEG score recompute
  3. 2026-07-17 19:00 UTCEG score recompute

Frequently asked(4)

What is CVE-2026-54247?
CVE-2026-54247 is a medium vulnerability published on July 17, 2026. Skipper: Unbounded Request Body Read in Admission Webhook Causes Memory Exhaustion DoS Summary The Kubernetes admission webhook handler reads the entire request body using io.ReadAll(r.Body) without any size limit. Any client that can reach the webhook port within the cluster can send a multi-GB…
When was CVE-2026-54247 disclosed?
CVE-2026-54247 was first published in the National Vulnerability Database on July 17, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
What is the CVSS score of CVE-2026-54247?
CVE-2026-54247 has a CVSS v4.0 base score of 4.3 (CNA self-assessment; NVD's own analysis pending). The EG score is currently aggregating — additional source signals are being incorporated as they become available..
How do I remediate CVE-2026-54247?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-54247, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-54247

Explore →

Is Your Infrastructure Affected by CVE-2026-54247?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.