Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network, unauthenticated, no UI; AC:H reflects the required unpinned-discovery precondition; S:C because forged auth impacts downstream relying parties; integrity-only (I:H), no confidentiality or availability loss.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Dapr Sentry's OIDC discovery endpoint derives the issuer and jwks_uri of the /.well-known/openid-configuration document from the request Host, honoring an attacker-controlled X-Forwarded-Host header without validation when no allowed-hosts list is configured (the default), and serves the document with a one-hour public cache lifetime. A remote unauthenticated attacker can poison the discovery document so relying parties performing dynamic (unpinned) discovery fetch the JWKS from an attacker-controlled server, causing attacker-signed JWTs to be accepted. Exploitation requires the OIDC server enabled without a configured jwt-issuer or oidc-allowed-hosts.
AnalysisAI
Authentication bypass via OIDC discovery poisoning in Dapr Sentry allows a remote unauthenticated attacker to inject an attacker-controlled issuer and jwks_uri into the /.well-known/openid-configuration document by supplying a crafted X-Forwarded-Host header. Because the endpoint honors that header without validation when no allowed-hosts list is set (the default) and caches the response publicly for one hour, relying parties that perform dynamic, unpinned OIDC discovery will fetch keys from an attacker's server and accept attacker-signed JWTs - effectively forging trusted identities. Reported by VulnCheck (CVSS 4.0 8.2); no public exploit identified at time of analysis, and it is not listed in CISA KEV.
Technical ContextAI
Dapr is a CNCF distributed-application runtime, and Sentry is its identity/certificate authority component. Sentry can expose an OIDC provider that publishes a standard discovery document at /.well-known/openid-configuration; relying parties read the issuer and jwks_uri from that document to locate the JSON Web Key Set used to validate JWT signatures. The flaw is an Origin Validation Error (CWE-346): Sentry derives those URLs from the inbound request Host and trusts the X-Forwarded-Host proxy header without checking it against an allowlist. Since HTTP forwarding headers are attacker-controllable and the document is served with a one-hour public cache lifetime, a single poisoned response can redirect JWKS retrieval to an external host for any consumer doing unpinned discovery. The affected CPE is cpe:2.3:a:dapr:dapr (all versions prior to the fix).
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the changes from dapr/dapr pull requests https://github.com/dapr/dapr/pull/10027, https://github.com/dapr/dapr/pull/10028 and https://github.com/dapr/dapr/pull/10029 by upgrading to the Dapr release that incorporates them once identified. As an immediate compensating control that does not require the patch, configure oidc-allowed-hosts so Sentry only emits discovery URLs for approved hostnames, and/or set an explicit jwt-issuer so the issuer/jwks_uri are no longer derived from the request Host - either setting removes the default vulnerable condition. Additionally, ensure any fronting proxy or load balancer strips or overwrites the X-Forwarded-Host header from untrusted clients, and consider shortening or disabling the one-hour public cache on the discovery response to limit poisoning persistence (trade-off: slightly higher discovery request load on Sentry). On the consuming side, pin relying parties to a known issuer and JWKS endpoint rather than following dynamic discovery, which neutralizes the attack regardless of Sentry configuration. Consult the VulnCheck advisory (https://www.vulncheck.com/advisories/dapr-oidc-discovery-issuer-and-jwks-uri-injection-via-unvalidated-x-forwarded-host) for authoritative guidance.
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge. Rated high severi
Path traversal in Dapr runtime versions 1.3.0-1.15.13, 1.16.0-rc.1-1.16.13, and 1.17.0-rc.1-1.17.4 allows authenticated
Same weakness CWE-346 – Origin Validation Error
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41427
GHSA-q8cr-74p8-486p