← Back to Feed CACHED · 2026-07-01 07:00:02 · CACHE_KEY CVE-2026-44946
CVE-2026-44946 · CWE-294 · Disclosed 2026-06-30

A SAML authentication replay vulnerability in Rancher's Assertion Consumer Service

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A used movie ticket that still gets you into the theater as long as you also brought the coat-check stub

Rancher's Assertion Consumer Service (ACS) — the endpoint that receives SAML responses from your IdP — failed to enforce one-time use of SAML assertions. An attacker who captures both a valid signed SAML response *and* the victim's pre-authentication SAML state cookie can replay them against /v1-saml/.../callback and receive an independent, fully authenticated Rancher session inheriting the victim's roles. Affected versions: all Rancher 2.x lines prior to v2.14.3, v2.13.7, v2.12.11, v2.11.15 (fixes released 2026-06-29). Every SAML IdP integration is in scope — Okta, Ping, ADFS, Keycloak, Shibboleth.

There is no vendor CVSS assigned yet, so this is a first assessment. The bug is a classic CWE-294 authentication bypass by capture-replay, which usually earns a HIGH label when the payoff is a real session. The friction — needing both artifacts at once — is meaningful, but Rancher is canonically a fleet-management control plane for Kubernetes clusters, so a replayed admin session is not just "one user" — it can be the keys to every downstream cluster.

"SAML replay in Rancher's ACS handler — if an attacker sniffs both the assertion and the pre-auth state cookie, they mint a parallel admin session."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Position for artifact capture

Attacker needs simultaneous access to (a) the signed SAML Response POSTed by the IdP browser round-trip and (b) the pre-auth SAML state cookie set by Rancher before the redirect. Practical positions: malicious browser extension, XSS on the Rancher hostname, a compromised reverse proxy in the auth path, or TLS-terminating middlebox logs.
Conditions required:
  • Man-in-the-browser, XSS on Rancher origin, or access to a TLS-terminating proxy/log store
  • Victim is actively authenticating via SAML during the window
Where this breaks in practice:
  • TLS end-to-end blocks passive network sniffing
  • HttpOnly + Secure cookie flags block basic XSS from reading the state cookie
  • Assertions typically carry short NotOnOrAfter (~5 min) windows
Detection/coverage: No CVE-specific IDS signature; capture is passive. Look for anomalous browser extensions or forward-proxy debug logging retention.
STEP 02

Extract SAMLResponse + state cookie

The attacker exfiltrates the base64 SAMLResponse form value and the Rancher _saml_state_ (or equivalent) cookie value. Signature stays valid because SAML assertions are signed end-to-end by the IdP; replay does not require re-signing. Tooling: SAMLRaider (Burp extension), samltool.com, or a custom curl replay script.
Conditions required:
  • Both artifacts captured within the assertion's NotOnOrAfter window
Where this breaks in practice:
  • Assertion validity typically 2–10 minutes — attacker must act fast
  • IdPs that bind assertions to client IP (rare) will reject cross-origin replay
Detection/coverage: Rancher audit logs will show two login-success events for the same NameID within seconds — a high-signal anomaly if you're piping audit to SIEM.
STEP 03

Replay against /v1-saml/<provider>/callback

Attacker POSTs the captured SAMLResponse to Rancher's ACS endpoint from their own browser, presenting the captured state cookie to satisfy the CSRF/relay-state check. Vulnerable Rancher does not track a used-assertion ID (InResponseTo / AssertionID) cache, so the second POST is accepted. Attacker receives a fresh R_SESS cookie tied to the victim's principal.
Conditions required:
  • Rancher server reachable from attacker's network position
  • Assertion still within its validity window
Where this breaks in practice:
  • If Rancher UI is behind a VPN or ZTNA, attacker needs that access too
  • Some deployments front Rancher with an OIDC proxy that adds independent session control
Detection/coverage: Duplicate assertion ID appearing twice in Rancher audit-log — grep for responseID / assertionID duplicates.
STEP 04

Escalate to downstream cluster compromise

With a valid Rancher session inheriting the victim's RBAC, the attacker uses the Rancher API (/v3/clusters/<id>/kubeconfig) to mint kubeconfigs for every cluster the victim can reach. If the victim held cluster-owner or global admin, this is fleet-wide Kubernetes admin. Tooling: rancher CLI, kubectl with the exfiltrated kubeconfig, peirates for post-exploitation.
Conditions required:
  • Victim principal has non-trivial cluster access — realistic for platform-team members
Where this breaks in practice:
  • Least-privilege RBAC in Rancher limits blast radius per victim
  • Cluster admission controllers (OPA/Kyverno) can slow lateral movement but not stop kubeconfig issuance
Detection/coverage: Rancher API access logs — kubeconfig download from an unusual source IP shortly after a duplicate login event.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone reported as of 2026-07-01. Not KEV-listed.
Public PoCNo public exploit yet; the replay mechanic is trivially reproducible with SAMLRaider + captured cookie. Expect PoC within weeks.
EPSSNot yet scored (disclosed 2026-06-30). Comparable SAML replay CVEs typically land in the 0.5–3% band initially.
KEV statusNot listed.
CVSS vector (noisgate assessed)CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:L7.4 HIGH. AC:H reflects the dual-artifact capture requirement; S:C reflects downstream cluster reach.
Affected versionsAll Rancher 2.11.x < 2.11.15, 2.12.x < 2.12.11, 2.13.x < 2.13.7, 2.14.x < 2.14.3. Only impacts installations with SAML auth providers enabled.
Fixed versionsv2.14.3, v2.13.7, v2.12.11, v2.11.15 (released 2026-06-29).
Exposure populationRancher web UI intentionally exposed to the internet on ~1,400 hosts per Shodan (http.title:"Rancher"); many more behind VPN/ZTNA. SAML is the dominant enterprise auth backend.
Affected IdPsAll SAML providers — Okta, Ping, ADFS, Keycloak, Shibboleth — because the flaw is in Rancher's ACS handler, not the IdP.
ReporterSUSE Rancher security team, published via GitHub Security Advisory on 2026-06-30.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.4/10)

Assessed HIGH because Rancher is canonically a Kubernetes fleet control plane — a replayed admin session is the keys to every managed cluster, and the SAML ACS handler affects every enterprise SAML deployment. The decisive factor is the role multiplier: even though the attack requires dual-artifact capture (AC:H), the blast radius when it lands is fleet-scale Kubernetes admin, so this floors at HIGH regardless of narrowing preconditions.

HIGH affected version ranges and fix availability
HIGH root cause — missing assertion-ID replay cache
MEDIUM real-world exploitation likelihood given dual-capture requirement

Why this verdict

  • Role multiplier — Rancher IS a fleet control plane. ≥95% of Rancher installs sit in the canonical high-value role (managing 1..N downstream Kubernetes clusters). A replayed admin session ends in kubeconfig issuance for every reachable cluster → fleet compromise. Per the hard rule, floor is HIGH; CRITICAL only if unauthenticated + trivially exploitable, which this isn't.
  • Friction — dual-artifact capture is real. Attacker must obtain BOTH a signed SAML Response AND the pre-auth state cookie within the assertion's validity window. This rules out passive network sniffing (TLS) and rules out most XSS (HttpOnly cookie). Realistic attack positions are compromised browser extensions, a malicious reverse proxy, or an insider with proxy log access — that is post-initial-access territory, which is why the score sits at HIGH not CRITICAL.
  • Exposure — small internet footprint, large internal footprint. Only ~1,400 Rancher UIs are directly internet-exposed per Shodan, but most enterprise deployments are internal-only with SAML SSO. The bug is exploitable from any position that can see the auth exchange, so the population is defenders' *SAML-authenticated user base*, not the internet.
  • No KEV, no PoC yet, but trivial to weaponize. The replay mechanic is a 20-line curl script once artifacts are captured. Expect a public PoC within the mitigation SLA window.

Why not higher?

Not CRITICAL because the attack is not unauthenticated-remote in the CVSS sense: it requires the attacker to be positioned to observe an active SAML login flow AND capture two distinct artifacts within a short window. There is no wormable pre-auth path from the open internet, and no evidence of in-the-wild exploitation. The chain ends in the *victim's* RBAC — global-admin capture is the worst case, not the guaranteed case.

Why not lower?

Not MEDIUM because the affected component is canonically a Kubernetes fleet control plane and the vuln is in the authentication boundary itself. Successful exploitation yields a real authenticated session, not just information disclosure, and downstream cluster admin is one API call away. Any authentication-boundary defect on a fleet-management plane clears the HIGH bar.

05 · Compensating Control

What to do — in priority order.

  1. Upgrade Rancher to a fixed line — Deploy v2.14.3 / v2.13.7 / v2.12.11 / v2.11.15 within 30 days per noisgate mitigation SLA for HIGH. Rancher's Helm upgrade is a routine control-plane operation; rehearse in a non-prod cluster first, then rolling-upgrade production.
  2. Restrict Rancher UI/API network exposure — Gate the Rancher UI behind a VPN, ZTNA, or IP allowlist so the attacker cannot POST to /v1-saml/*/callback even with captured artifacts. Deploy within days if you cannot upgrade immediately.
  3. Shorten SAML assertion validity at the IdP — Configure Okta/Ping/ADFS/Keycloak to issue assertions with NotOnOrAfter of ≤2 minutes. This shrinks the replay window drastically and costs nothing. Apply within 7 days.
  4. Alert on duplicate SAML assertion IDs in Rancher audit log — Pipe Rancher audit-log to your SIEM and alert on two login-success events with the same assertionID or two logins for the same NameID within 60 seconds. This detects live exploitation while you upgrade.
  5. Force re-auth for all active sessions post-upgrade — After patching, invalidate existing R_SESS tokens (kubectl -n cattle-system delete tokens --all on the local cluster) to burn any pre-existing replayed sessions.
What doesn't work
  • Rotating SAML signing certs — the vuln is replay of validly-signed assertions, not signature forgery. New certs don't invalidate a captured assertion within its validity window.
  • WAF rules on generic SAML paths — the replayed request is structurally identical to a legitimate one; a WAF cannot distinguish first-use from replay without the assertion-ID cache Rancher itself was missing.
  • MFA at the IdP — MFA is enforced before the assertion is issued, so a replayed post-MFA assertion still succeeds. MFA does not defeat capture-replay of the artifact *after* MFA.
06 · Verification

Crowdsourced verification payload.

Run on any host with curl and jq that can reach your Rancher server, from an auditor workstation. Invoke as ./check-cve-2026-44946.sh https://rancher.example.com — no privileges required, it reads the /rancherversion unauthenticated endpoint.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate check for CVE-2026-44946 (Rancher SAML ACS replay)
# Usage: ./check-cve-2026-44946.sh https://rancher.example.com
set -u

RANCHER_URL="${1:-}"
if [[ -z "$RANCHER_URL" ]]; then
  echo "Usage: $0 https://rancher.example.com" >&2
  exit 2
fi

VER_JSON=$(curl -fsSk "${RANCHER_URL%/}/rancherversion" 2>/dev/null)
if [[ -z "$VER_JSON" ]]; then
  echo "UNKNOWN: could not reach ${RANCHER_URL}/rancherversion"
  exit 3
fi

VERSION=$(echo "$VER_JSON" | grep -oE '"Version"[[:space:]]*:[[:space:]]*"[^"]+"' | sed -E 's/.*"([^"]+)"$/\1/' | sed 's/^v//')
if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN: could not parse version from response"
  exit 3
fi

# Compare against fixed lines: 2.11.15 / 2.12.11 / 2.13.7 / 2.14.3
MAJOR=$(echo "$VERSION" | awk -F. '{print $1}')
MINOR=$(echo "$VERSION" | awk -F. '{print $2}')
PATCH=$(echo "$VERSION" | awk -F. '{print $3}' | grep -oE '^[0-9]+')

if [[ "$MAJOR" != "2" ]]; then
  echo "UNKNOWN: unexpected major version ${VERSION}"
  exit 3
fi

declare -A FIXED=( [11]=15 [12]=11 [13]=7 [14]=3 )
FIX=${FIXED[$MINOR]:-}
if [[ -z "$FIX" ]]; then
  echo "UNKNOWN: unsupported minor line 2.${MINOR}.x (version ${VERSION})"
  exit 3
fi

if (( PATCH >= FIX )); then
  echo "PATCHED: Rancher ${VERSION} >= fix 2.${MINOR}.${FIX}"
  exit 0
else
  echo "VULNERABLE: Rancher ${VERSION} < fix 2.${MINOR}.${FIX} — CVE-2026-44946"
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: identify every Rancher server (check Helm releases across your management clusters and any legacy VM installs), confirm SAML auth is enabled, and schedule upgrades to v2.14.3 / v2.13.7 / v2.12.11 / v2.11.15. Per the noisgate mitigation SLA for HIGH, deploy a compensating control (gate Rancher UI behind ZTNA/VPN + shorten IdP assertion validity to ≤2 minutes + SIEM alert on duplicate assertion IDs) within 30 days; per the noisgate remediation SLA, complete the version upgrade within 180 days. Not KEV-listed and no active exploitation, so no emergency 3-day override — but a public PoC is a matter of weeks, and the fleet-Kubernetes blast radius means don't let this drift into next quarter.

Sources

  1. Rancher Security Advisories
  2. Rancher GitHub Security Advisories
  3. CWE-294: Authentication Bypass by Capture-Replay
  4. Rancher SAML auth provider docs
  5. SAMLRaider (Burp extension for SAML replay testing)
  6. OASIS SAML 2.0 Core — assertion replay protection guidance (§4.1.4.5)
  7. CISA KEV Catalog (check for future listing)
  8. FIRST EPSS lookup
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.