Skip to main content

Data Sharing Framework EUVDEUVD-2026-24496

| CVE-2026-40942 MEDIUM
Always-Incorrect Control Flow Implementation (CWE-670)
2026-04-21 GitHub_M
6.3
CVSS 4.0 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/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
vuln.today AI
4.8 MEDIUM

AC:H reflects AT:P requirement (OIDC must be configured); I:L added for expired-token acceptance beyond vendor's availability-only score; no confidentiality impact.

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

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

6
Source Code Evidence Fetched
Jul 24, 2026 - 05:35 vuln.today
Analysis Generated
Jul 24, 2026 - 05:35 vuln.today
Patch released
Apr 29, 2026 - 20:57 nvd
Patch available
Patch available
Apr 21, 2026 - 22:17 EUVD
EUVD ID Assigned
Apr 21, 2026 - 22:16 euvd
EUVD-2026-24496
CVE Published
Apr 21, 2026 - 21:09 nvd
MEDIUM 6.3

DescriptionGitHub Advisory

The Data Sharing Framework (DSF) implements a distributed process engine based on the BPMN 2.0 and FHIR R4 standards. Prior to 2.1.0, The OIDC JWKS and Metadata Document caches used an inverted time comparison (isBefore instead of isAfter), causing the cache to never return cached values. Every incoming request triggered a fresh HTTP fetch of the OIDC Metadata Document and JWKS keys from the OIDC provider. The OIDC token cache for the FHIR client connections used an inverted time comparison (isBefore instead of isAfter), causing the cache to never invalidate. Every incoming request returned the same OIDC token even if expired. This vulnerability is fixed in 2.1.0.

AnalysisAI

Inverted time comparison logic in the Data Sharing Framework (DSF) OIDC cache layer creates two compounding defects in all versions prior to 2.1.0: the JWKS and Metadata Document caches never serve cached values, forcing a live HTTP fetch to the OIDC provider on every authenticated request, while the FHIR client token cache never expires entries, allowing revoked or expired OIDC tokens to be accepted indefinitely. Both conditions require OIDC bearer-token authentication or back-channel logout to be enabled on the DSF FHIR Server or BPE Server. No public exploit exists and SSVC confirms exploitation status as none, but the expired-token acceptance path represents a meaningful authentication integrity gap in deployments relying on token revocation.

Technical ContextAI

DSF is a Java-based distributed process engine built on BPMN 2.0 and FHIR R4, used in healthcare data sharing scenarios. The defect (CWE-670: Always-Incorrect Control Flow Implementation) manifests in two cache classes: BaseOidcClientWithCache (configuration and JWKS caches) and OidcClientWithCache (configuration, JWKS, and access token caches). In both, a ZonedDateTime comparison used isBefore where isAfter was required - a single-character logical inversion that inverts cache hit/miss semantics. The JWKS cache bug causes the condition 'cache entry is still valid' to always evaluate false, while the token cache bug causes 'token is expired' to always evaluate false. Affected CPEs include cpe:2.3:a:datasharingframework:dsf:*:*:*:*:*:*:*:*, cpe:2.3:a:dev.dsf:dsf-bpe-process-api-v2:*:*:*:*:*:*:*:*, and cpe:2.3:a:dev.dsf:dsf-bpe-server:*:*:*:*:*:*:*:*. The fix in commits 31c2e974d and d3ca59b4d corrects both comparisons and adds configurable cache timeouts.

RemediationAI

Upgrade to DSF 2.1.0, which corrects both cache comparison inversions in BaseOidcClientWithCache and OidcClientWithCache (commits 31c2e974d and d3ca59b4d). The fix also introduces configurable cache timeouts via dev.dsf.server.auth.oidc.provider.client.cache.timeout.configuration.resource and dev.dsf.server.auth.oidc.provider.client.cache.timeout.jwks.resource, defaulting to PT1H. Full details are in the GitHub Security Advisory at https://github.com/datasharingframework/dsf/security/advisories/GHSA-xmj9-7625-f634. Before patching, operators can restart the BPE server to force-clear the stuck token cache, which temporarily restores correct token expiry behavior until the next expired token is cached. Disabling OIDC authentication entirely (reverting to mutual TLS) eliminates exposure from both defects but removes OIDC-dependent access control features. There is no partial workaround that addresses the JWKS cache miss path without patching.

Share

EUVD-2026-24496 vulnerability details – vuln.today

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