Summary
CVE-2026-73309 is an authentication bypass vulnerability in the OAuth2 token endpoint of XenForo forum software, affecting all versions before 2.3.13. It allows an unauthenticated attacker to obtain a valid OAuth2 token pair without ever proving client identity or possessing the PKCE code verifier, by simply submitting empty values for the client_secret and code_verifier parameters. The issue carries a CVSS score of 9.1 (Critical).
Technical details
- Root cause: The token endpoint’s validation logic relies on PHP’s truthy evaluation, which treats an empty string as
false; whenclient_secretandcode_verifierare submitted as empty strings, the corresponding validation checks are skipped entirely (CWE-697: Incorrect Comparison). - Trigger conditions: An attacker in possession of a valid authorization code (or able to obtain one) can send a token exchange request to the OAuth2 token endpoint with empty
client_secretandcode_verifiervalues. - Attack vector: Network-based, requires no authentication and no user interaction, though the attack complexity is rated high.
- Impact: Successful exploitation yields a valid access/refresh token pair without proving client identity or holding the PKCE commitment, resulting in high confidentiality and integrity impact on the affected OAuth2 client relationship.
Affected software
- XenForo, all versions from the initial release up to (but not including) 2.3.13
Severity
- CVSS v3.1 Base Score: 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 Base Score: 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 to XenForo 2.3.13 or later, which fixes the OAuth2 token endpoint validation logic.
- If no patch: If upgrading is not immediately possible, disable or restrict OAuth2 client/token-endpoint functionality until the patch can be applied, and monitor OAuth2 token issuance logs for anomalous requests using empty
client_secretorcode_verifiervalues.
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

