Summary
CVE-2026-73314 is a signature verification logic flaw in XenForo’s PayPal REST webhook handler, affecting all XenForo versions before 2.3.13. The verification function fails open rather than closed when it receives an unsupported auth_algo header value, allowing unauthenticated attackers to submit fabricated webhook requests that XenForo treats as legitimate PayPal payment events. The issue is rated HIGH severity.
Technical details
- Root cause: when the PayPal webhook handler encounters an
auth_algovalue it cannot map to a supported hash function, the verification routine returnstrueinstead of rejecting the request (improper check for unusual/exceptional conditions, CWE-754). - Trigger condition: an attacker sends a crafted webhook POST request to the PayPal REST webhook endpoint with an unsupported/unrecognized
auth_algoheader. - Attack vector: network, unauthenticated, no user interaction required, low attack complexity.
- Impact: the forged request is treated as a validly signed PayPal event, allowing fraudulent payment/order data to be accepted and processed without a genuine PayPal signature. This is an integrity impact only (no confidentiality or availability impact reported).
Affected software
- XenForo, all versions from 0 up to and including 2.3.12
Severity
- CVSS v3.1 Base Score: 7.5 (High) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - CVSS v4.0 Base Score: 8.7 (High) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: upgrade to XenForo 2.3.13 or later, which corrects the PayPal webhook signature verification logic.
- If immediate patching is not possible, review PayPal webhook/payment logs for unexpected
auth_algoheader values or unverifiable payment events, and restrict or monitor access to the webhook endpoint at the network/WAF layer until the patch is applied.
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

