Summary
CVE-2026-73311 is an OAuth2 authorization code reuse vulnerability (CWE-294, Authentication Bypass by Capture-replay) affecting XenForo forum software before version 2.3.13. XenForo’s OAuth2 implementation fails to invalidate authorization codes after they are first exchanged for tokens, allowing a previously used code to be resubmitted to mint an additional, independent token pair for the same user and scopes. The flaw is rated CRITICAL (CVSS v4.0 base score 9.1); it also carries a CVSS v3.1 HIGH rating.
Technical details
- Root cause: After a client exchanges an OAuth2 authorization code for an access/refresh token pair, XenForo does not mark that code as consumed or otherwise invalidate it.
- Trigger condition: An attacker in possession of a previously issued (and already-used) authorization code can resubmit it to the token endpoint.
- Attack vector: Network-based; no user interaction required; the OAuth2 authorization code flow’s single-use guarantee is bypassed by replaying a captured code.
- Impact: The attacker obtains a fresh, unauthorized token pair scoped to the victim account, enabling unauthorized API access and potential account compromise.
Affected software
- XenForo, all versions from the initial release up to (but not including) 2.3.13.
Severity
- CVSS v3.1: 7.4 (HIGH) —
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N - CVSS v4.0: 9.1 (CRITICAL) —
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: Upgrade XenForo to version 2.3.13 or later, which corrects the authorization code invalidation logic.
- If immediate patching isn’t possible: Monitor OAuth2 token issuance logs for repeated token grants against the same authorization code, and consider disabling/restricting OAuth2 client integrations until the update is applied. There is no vendor-documented workaround other than upgrading.
How IONIX identifies potentially affected assets
IONIX matches the following signals against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Raw response body:
jQuery.extend(true, XenForo,Forum software by XenForo™,<!--XF:branding,<html id="XenForo",<html id="XF" - JavaScript object present once the page runs:
XF.GuestUsername

