BomboBombone.exe
ARCHITECTURE:x86-64
BACK
.WEB.OAUTHXenForo / OAuth2
08 Sept 2026 · 3 min
XenForo / OAuth2 · 08 Sept 2026

CVE-2026-73312: Refresh token replay after access-token expiry

An expired XenForo access token left its refresh token reusable.

POST VIEWTEXT / UTF-8
ADDRESS MARKDOWN BYTES

XenForo 2.3.12 build 2031270 allowed a refresh token to be reused after its associated access token expired. Each replay issued a new access-token and refresh-token pair with the same user and scopes.

Technical details

The refresh endpoint created the replacement pair and then called the old access token’s revocation routine. That routine started by checking whether the access token was still valid. An expired token failed immediately, so the function returned before revoking anything—including the related refresh token.

Reproduction

  1. Obtain a valid OAuth2 access token and its refresh token.
  2. Wait for the access token to expire.
  3. Submit the refresh token and record the replacement pair.
  4. Submit the original refresh token again.
  5. Verify both returned access tokens at /api/me.

Both refresh requests succeeded, and the original refresh token remained usable.

Impact

Anyone holding the refresh token could continue creating valid token pairs after the parent access token expired. Confidential clients still required their client secret.

XenForo 2.3.13 consumes the refresh token independently of its expired parent and issues the replacement in the same operation.

References

1592 UTF-8 BYTES .WEB.OAUTH · ADDRESSES ARE UTF-8 BYTE OFFSETS

Resize column

Choose a width with the slider or the narrower and wider buttons.