Safeguard
Vulnerability Analysis•

CVE-2026-73309: OAuth2 Authentication Bypass in XenForo

CVE-2026-73309 is a CVSS 7.4 OAuth2 token endpoint flaw in XenForo before 2.3.13 where empty secret values skip validation. Upgrade to 2.3.13.

Safeguard Security Team
3 min read

CVE-2026-73309 is a high severity (CVSS 7.4) authentication bypass in the XenForo OAuth2 token endpoint. Sending empty values for the client secret and code verifier skips both checks. It affects XenForo before 2.3.13, so upgrade to 2.3.13 or the matching fix for the 2.2 line.

What's affected

XenForo before 2.3.13, per the NVD record and the VulnCheck advisory. XenForo's own thread announcing the security fixes covers versions 2.2.0 through 2.3.12 and the Media Gallery add-on, which suggests the 2.2 line has its own fixed build. That page did not load for me as text, so confirm the exact release for your branch there.

The flaw concerns the OAuth2 token endpoint, where an authorization code is exchanged for tokens. It matters for sites that use XenForo as an OAuth2 provider, with registered clients.

How to check if you're exposed

The administrator control panel shows the installed XenForo version on its dashboard and in the footer. Compare it with 2.3.13.

Then check whether you use OAuth2 clients at all. If you have none registered, the exposure is lower. Review the registered clients and their activity.

What to do now

  1. Upgrade XenForo to 2.3.13, or to the fixed release for the 2.2 line, using the vendor's thread.
  2. Update the Media Gallery add-on if you run it, since it was in the same release.
  3. Review registered OAuth2 clients and remove any you do not recognize.
  4. Check logs for token endpoint requests that succeeded without a client secret.
  5. Revoke tokens issued to clients you cannot account for.

Why it matters

The record maps this to CWE-697, incorrect comparison. The description explains it in terms of how PHP treats values. An empty string counts as false in a truthiness test, so code of the form "if a secret was supplied, check it" skipped the check when the supplied secret was empty.

The same shortcut removed the PKCE check. PKCE exists to prove that the party exchanging a code is the one that started the flow, so skipping it takes away the protection for public clients.

The safe pattern is to test whether a value is present as a separate question from whether it is correct, and to fail closed. Compare against null or use strict comparison. The KEV flag is false.

Quick check

Does CVE-2026-73309 need a login?

The record says unauthenticated attackers can obtain token pairs, though they must have a valid authorization code.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.