Skip to main content

Steeltoe EUVDEUVD-2026-37817

| CVE-2026-50202 MEDIUM
Exposure of Resource to Wrong Sphere (CWE-668)
2026-06-17 GitHub_M GHSA-7fqc-p256-7pwj
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify multi-scheme Steeltoe deployment with distinct IdPs
  2. Delivery
    Discover matching kid across two IdP JWKS endpoints
  3. Exploit
    Obtain valid JWT from IdP-A bearing the shared kid
  4. Execution
    Submit token to application endpoint protected by IdP-B scheme
  5. Persist
    Cache collision causes TokenKeyResolver to return IdP-A key for IdP-B validation
  6. Impact
    Unauthorized access granted to IdP-B-protected resources

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Resource sphere isolation
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation of the cross-authority confusion vector requires all of the following: (1) the application must register two or more JwtBearer authentication schemes each pointing to distinct identity provider authority URLs; (2) both identity providers must publish signing keys that share the same kid string value - either by coincidence or by attacker influence over one IdP's key naming convention; (3) the attacker must possess a valid JWT bearing that kid, issued by the IdP whose key is resolved and cached first. The stale-key vector has a lower bar: any application using affected versions where the configured IdP rotates its signing keys will continue to accept tokens signed by the old (revoked) key until the process restarts - this applies even to single-scheme deployments. Limiting factors: single-scheme deployments are not susceptible to the cross-authority confusion; kid collisions between unrelated IdPs are not guaranteed; and the CVSS AC:H metric explicitly reflects the non-default configuration dependency. The CVSS PR:H designation implies attacker-level control over an IdP, while the simpler collision scenario requires only holding a valid user-level token from one of the configured providers.

Impact

The provided CVSS 3.1 vector (AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N) scores 5.9, reflecting network exploitability against high-complexity, high-privilege conditions. AC:H is well-justified: exploitation requires both a multi-scheme deployment across distinct IdPs AND a kid collision between those providers - a configuration absent from the vast majority of single-IdP deployments. The PR:H designation appears to assume the attacker must exercise influence over one of the IdP's key naming (e.g., to manufacture a collision); for the simpler scenario where a collision occurs naturally, PR:L (holding a valid token from one IdP) is arguably sufficient - this inconsistency is worth flagging to defenders. No EPSS data was supplied; given AC:H and the specific deployment prerequisite, widespread opportunistic exploitation is implausible. The stale-key vector (rotated keys remaining trusted indefinitely until process restart) is a distinct, lower-barrier risk for any single-IdP deployment that rotates keys, as it requires only a valid pre-rotation token rather than a cross-IdP kid collision. No active exploitation is confirmed by CISA KEV and no public exploit code is known.

Exploit ScenarioDerived

An attacker who holds a valid JWT from identity provider A - or who can influence IdP A's key naming - submits that token to an application endpoint whose JwtBearer scheme is configured for identity provider B. If both IdPs publish a signing key sharing the same kid string, the Steeltoe TokenKeyResolver returns the cached key fetched for IdP A in response to the validation lookup for scheme B, causing the ASP.NET Core middleware to accept the foreign token as valid for IdP B's audience. No public proof-of-concept code is known at time of analysis, but the attack requires only standard JWT construction tooling once a kid collision is identified.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 17, 2026

Cross-authority JWT signing key confusion in Steeltoe authentication libraries allows tokens issued by one identity provider to be accepted by application schemes configured for a different authority. Affected are CloudFoundryBase prior to 3.4.0, JwtBearer prior to 4.2.0, and OpenIdConnect prior to 4.2.0 when deployed in multi-scheme configurations. No public exploit has been identified at time of analysis; vendor patches are available and no CISA KEV listing exists.

RemediationAI

Upgrade to the patched releases: Steeltoe.Security.Authentication.CloudFoundryBase 3.4.0, Steeltoe.Security.Authentication.JwtBearer 4.2.0, and Steeltoe.Security.Authentication.OpenIdConnect 4.2.0. These versions introduce authority-namespaced cache keys and bounded TTL expiration, eliminating both the cross-authority confusion and the stale-key retention issues. Fix commits are available at https://github.com/SteeltoeOSS/Steeltoe/commit/04db2ace3b806bfe0260bb7d4bda340f241eff48 and https://github.com/SteeltoeOSS/Steeltoe/commit/17b27b8be546ae3f83a2f6e91d45e0c84c5314b7. If immediate upgrade is not possible, two compensating controls apply: (1) Restrict each application instance to a single JwtBearer scheme - this eliminates the cross-authority cache collision vector but requires architectural changes in multi-IdP deployments and may not be feasible without application refactoring; (2) Restart the application process immediately after any identity provider signing key rotation - this flushes the unbounded ConcurrentDictionary cache, preventing post-rotation stale key acceptance, but is purely reactive and requires operational discipline to execute consistently. Neither workaround addresses both attack vectors simultaneously.

Affected VersionsENISA

Steeltoe.Security.Authentication.CloudFoundryBase < 3.4.0
Steeltoe.Security.Authentication.JwtBearer < 4.2.0
Steeltoe.Security.Authentication.OpenIdConnect < 4.2.0

Affected Packages

nuget steeltoe.security.authentication.cloudfoundrybase fix: 3.4.0
nuget steeltoe.security.authentication.jwtbearer fix: 4.2.0
nuget steeltoe.security.authentication.openidconnect fix: 4.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in nuget

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability resides in the TokenKeyResolver class shared across the three affected Steeltoe NuGet packages (CPE: cpe:2.3:a:steeltoeoss:steeltoe.security.authentication.cloudfoundrybase, cpe:2.3:a:steeltoeoss:steeltoe.security.authentication.jwtbearer, cpe:2.3:a:steeltoeoss:steeltoe.security.authentication.openidconnect). The root cause maps to CWE-668 (Exposure of Resource to Wrong Sphere): the JWT signing key cache used a ConcurrentDictionary<string, SecurityKey> indexed solely by the kid (Key ID) JWT header value, with no authority URL included in the cache key and no expiration policy. In ASP.NET Core applications registering multiple JwtBearer schemes pointing to distinct identity providers, this shared namespace means a resolved key fetched for authority A will satisfy cache lookups initiated by scheme B if both IdPs happen to use the same kid string. The commit diff at 04db2ace confirms the fix: composite cache keys are now formed by combining the authority URI with the kid (via GetCacheKey(tokenKeysUri, keyId)), the unbounded ConcurrentDictionary is replaced with MemoryCache carrying a 12-hour TTL for found keys and 30-60 second TTL for not-found entries, and the resolver is registered as a singleton shared across all schemes rather than being instantiated per-scheme.

Know when Steeltoe Security Authentication Cloudfoundrybase gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 6.8 MEDIUM

Multi-scheme deployment plus kid collision required (AC:H); attacker needs only a valid token from one co-configured IdP (PR:L, not PR:H); no availability impact applies.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Jul 02, 2026 - 22:02 EUVD

DescriptionCVE.org

Steeltoe is an open source project that provides a collection of libraries that helps users build cloud-native applications. In Steeltoe.Security.Authentication.CloudFoundryBase prior to version 3.4.0, Steeltoe.Security.Authentication.JwtBearer prior to version 4.2.0, and Steeltoe.Security.Authentication.OpenIdConnect prior to version 4.2.0, the JWT signing key cache in TokenKeyResolver uses kid as the sole cache key without namespacing by authority. In applications with multiple JwtBearer schemes pointing to different identity providers, a key fetched for one scheme can satisfy token validation for another. Additionally, cached keys have no expiration, so rotated or revoked keys remain trusted until the application process restarts. Steeltoe.Security.Authentication.CloudFoundryBase version 3.4.0, Steeltoe.Security.Authentication.JwtBearer version 4.2.0, and Steeltoe.Security.Authentication.OpenIdConnect version 4.2.0 patch the issue. If an immediate upgrade is not possible: In multi-scheme deployments, configure only one JwtBearer scheme per application when different identity providers are required; and/or restart the application process after an identity provider signing key rotation to clear stale cached keys.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Threat Intel
1
1 sources
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy