Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid authorization code
-
DeliveryFire concurrent token-exchange requests
-
ExploitRace non-atomic find-then-delete
-
ExecutionReceive multiple valid access tokens
-
ImpactAccess protected resources with surplus tokens
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Exploitation requires that the target run the Apache CXF OAuth2 authorization server using the JPA-backed authorization code grant provider persisting codes to a shared relational database operating under READ_COMMITTED isolation - this specific provider/config is the prerequisite, not default for every CXF deployment. The attacker must also possess a single valid, not-yet-redeemed authorization code and be able to issue multiple token-exchange requests concurrently to win the race. Limiting factors: success is probabilistic due to the timing race (AC:H); stronger database isolation (e.g., SERIALIZABLE) or the patched atomic delete removes the window; and affected versions are bounded to CXF <3.6.13, 4.2.0-<4.2.4, and 4.0.0-<4.1.9. |
| Impact | Signals are consistent in pointing to a real-but-conditional risk rather than a mass-exploitation emergency. The CVSS 3.1 base score of 8.1 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) reflects a network-reachable flaw with no required privileges or user interaction, but critically carries AC:H - exploitation depends on winning a timing race against a non-atomic find-then-delete under READ_COMMITTED database isolation, which is not deterministic. EPSS corroborates this: 0.22% (11th percentile) indicates very low predicted exploitation probability, aligning with the high attack complexity and the narrow precondition that the attacker must already possess a valid authorization code. The flaw is NOT in CISA KEV and there is no public exploit identified at time of analysis, so there is no evidence of active exploitation. Note a nuance the CVSS vector understates: although PR:N is scored (the token endpoint requires no pre-existing account), the attacker must hold or intercept a legitimate OAuth2 authorization code, so this is realistically an abuse of the OAuth flow rather than a fully anonymous attack - verify operational context before treating it as trivially remote. Overall: a legitimately serious correctness/authorization defect worth patching promptly for anyone running the CXF JPA OAuth2 authorization-code provider, but not an emergency 'drop-everything' item given AC:H, low EPSS, no KEV, and no known POC. |
| Exploit ScenarioDerived | An OAuth2 client (or an attacker who has intercepted a single authorization code) submits several token-exchange requests to the Apache CXF authorization server simultaneously. Because the JPA provider performs a non-atomic find-then-delete on the code under READ_COMMITTED isolation, multiple concurrent requests each find the code still present and are each issued a valid access token, defeating single-use semantics. No public exploit code is identified, and the timing-dependent race (AC:H) makes reliable exploitation non-trivial. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Oct 15, 2026
Concurrent token-exchange requests against Apache CXF's JPA-backed OAuth2 authorization code grant provider can redeem a single authorization code more than once, yielding multiple valid access tokens from one code. Only deployments running the JPA authorization code provider that persists codes to a shared relational database under READ_COMMITTED isolation and that expose the token endpoint to remote callers are affected; versions below 3.6.13, 4.0.0 through 4.1.8, and 4.2.0 through 4.2.3 are in scope. Exploitation is unauthenticated per the CVSS vector (PR:N) but carries a high attack-complexity rating because the attacker must already hold one unredeemed code and win a timing race, so success is probabilistic; EPSS is low at 0.22% (11th percentile) and no public exploit identified at time of analysis, making this a real-but-conditional risk rather than a mass-exploitation emergency.
Earlier versions of this analysis (1)
Improper enforcement of the single-use authorization code requirement in Apache CXF's JPA-backed OAuth2 authorization code grant provider lets an authenticated remote attacker holding one valid, unredeemed authorization code obtain multiple valid access tokens from that single code. The attacker achieves this by issuing tightly concurrent token-exchange requests that race the provider's non-atomic find-then-delete lookup against a shared relational database running under READ_COMMITTED isolation, so more than one request can read the code before any request deletes it. Exploitation is bounded: it requires a valid code, a JPA token store on a shared database, and the ability to win the timing race - no public exploit code was identified at time of analysis, and no KEV listing or EPSS score was provided. Vendor-released patches are available in 4.2.4, 4.1.9, and 3.6.13.
RemediationAI
Vendor-released patch: upgrade to Apache CXF 4.2.4 for the 4.2.x line, 4.1.9 for 4.0.0-4.1.x deployments, or 3.6.13 for all releases below 3.6.13 - these versions make authorization code redemption atomic and eliminate the find-then-delete race window (advisory: https://lists.apache.org/thread.html/6msbm601o6ogfgdzdbtbrmgspmz50nxk). If an immediate upgrade is not possible, raise the transaction isolation level of the token-store datasource to SERIALIZABLE (or REPEATABLE READ on engines where it is enforced) so concurrent redemptions on the same code row conflict instead of both succeeding, accepting the trade-off of increased serialization failures, retry logic, and lock contention on a hot token endpoint; alternatively add a database unique constraint or an atomic conditional delete/optimistic-locking version column on the persisted authorization code so a second concurrent redemption fails rather than issuing a token, which requires schema and code changes and must be validated against CXF's JPA mappings. Additional compensating controls with clear costs: disable or replace the JPA authorization code provider in favor of an in-memory or single-node code store where the deployment topology permits it (breaks horizontal scaling and multi-node failover), and apply strict per-client rate limiting or serialization at the token endpoint plus alerting on multiple token issuances from one authorization code (reduces but does not remove the race, and can throttle legitimate clients). No vendor-released patch was identified for versions outside the three fixed lines, and rotating or shortening access token lifetimes limits, but does not prevent, the value an attacker gains from duplicate tokens; note EPSS is only 0.22% and no public exploit has been identified, so the upgrade can be scheduled with normal change management for internet-facing authorization servers while prioritizing any instance that already serves untrusted clients.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache CXF's OAuth2 module implements the RFC 6749 authorization code grant, and the JPA variant stores issued authorization codes as entities in a relational database rather than in memory. During token exchange the provider performs a find-then-delete sequence: it selects the code row to validate it, then deletes it to enforce single-use semantics. Because that pair of operations is not atomic and the database runs under READ_COMMITTED isolation (the PostgreSQL and MySQL/MariaDB default), two or more token requests arriving simultaneously can both complete the find step on the same still-present row before either delete commits, so each request proceeds to mint its own access token - a classic CWE-367 time-of-check time-of-use race condition on a shared resource. No authorization checks are bypassed and no tokens are forged; the flaw is purely in the single-use enforcement, which is why the impact is scoped to confidentiality and integrity (duplicate token issuance) rather than to the OAuth2 credential or signing keys. Upstream remediation makes the redemption atomic so only one concurrent request can claim a code, closing the race window; the CPE cpe:2.3:a:apache_software_foundation:apache_cxf confirms the affected component is the Apache CXF distribution itself rather than a downstream integration.
Know when Apache Cxf 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
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Network token endpoint (AV:N); timing race under READ_COMMITTED makes it AC:H; no account needed beyond a held auth code so PR:N; surplus tokens grant resource access (C:H/I:H) but no availability loss (A:N).
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
2DescriptionCVE.org
Improper enforcement of single-use authorization code semantics in the JPA OAuth2 authorization code grant provider in Apache CXFallows a remote attacker to obtain multiple valid access tokens from a single authorization code via concurrent token exchange requests that race the non-atomic find-then-delete operation against a shared relational database under READ_COMMITTED isolation. Users are recommended to upgrade to versions 4.2.4 or 4.1.9 or 3.6.13, which fixes this issue.
Executive ViewAI
Apache CXF, an open-source framework widely embedded in Java-based API gateways and identity services, contains a HIGH-severity flaw in its JPA-backed OAuth2 authorization code provider that can let a single authorization code be exchanged for multiple valid access tokens. Only the narrow subset of deployments that persist authorization codes to a shared relational database under READ_COMMITTED isolation and expose the token endpoint to remote callers is exposed, but for those organizations the consequence is unauthorized token issuance that could be used to impersonate users or services. Leadership should care because the affected systems are typically authentication infrastructure, meaning a successful attack can undermine the trust boundary protecting downstream applications, even though the exploit is a probabilistic timing race with low observed activity.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Apache Cxf
View allArbitrary certificate disclosure in Apache CXF's XKMS server lets remote attackers abuse an LDAP injection flaw (CWE-90)
Unsafe deserialization in Apache CXF's JMS transport allows any party able to publish to the service's JMS destination t
Token validation bypass in Apache CXF's STSTokenValidator and Security Token Service (STS) allows unauthenticated remote
Man-in-the-middle attackers can impersonate any TLS server contacted by Apache CXF's optional Netty-based HTTP client tr
XML signature wrapping in Apache CXF's JAX-RS XML Security module allows remote, unauthenticated attackers to have unsig
Trust bypass in Apache CXF's STSTokenValidator allows a remote, unauthenticated attacker to have a forged SAML assertion
A remote, unauthenticated attacker can exhaust server heap memory in Apache CXF by submitting a small (kilobyte-scale) D
Remote code execution in Apache CXF (versions before 3.6.11, 4.0.0-4.1.5, and 4.2.0) arises because the fix for CVE-2025
XML External Entity injection in Apache CXF's WSDL import processing allows attackers who can influence imported WSDL or
Denial of service persists in Apache CXF due to an incomplete remediation of CVE-2026-50645, allowing unauthenticated ne
Authorization scope escalation in Apache CXF's OAuth2 Dynamic Client Registration endpoint allows any registering client
Open redirect in Apache CXF's OIDC relying-party component lets remote, unauthenticated attackers steer users to an atta
EUVD-2026-95695
GHSA-4856-vwpx-pmq8
NVD
CVE.org
EPSS
VulDB
Exploit-DB