BomboBombone.exe
ARCHITECTURE:x86-64
BACK
.TEXTXenForo / Payments
08 Sept 2026 · 3 min
XenForo / Payments · 08 Sept 2026

CVE-2026-73316: PayPal webhook replay

XenForo processed the same signed PayPal callback twice and extended a recurring upgrade twice.

POST VIEWTEXT / UTF-8

I captured one valid PayPal callback and sent it to XenForo twice. Both requests returned success. The same transaction appeared twice in the payment log, and the recurring upgrade was extended twice.

Where the duplicate check went

XenForo’s base payment code checks whether a provider transaction has already been processed. The PayPal REST override of validateTransaction() bypassed that implementation, and the database allowed duplicate transaction IDs.

After signature verification succeeded, XenForo ran purchase completion before any processed-event lookup.

The test used an authentic delivery with its original body and headers:

  1. Send the callback once and record the new expiry date.
  2. Replay the exact request.
  3. Compare the payment log and expiry date again.

Replaying the purchase-completion path required one authentic callback with its original signature.

The public PoC accepts a saved callback and replays it twice. XenForo added replay protection in 2.3.13.

MEASURING VISUAL LINES… ADDRESSES ARE UTF-8 BYTE OFFSETS

Resize column

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