
Preuve de concept et analyse technique pour CVE-2026-73316, une vulnérabilité de rejeu de webhook REST PayPal dans XenForo avant la version 2.3.13, incluant les étapes de reproduction et les détails du correctif.
XenForo avant la version 2.3.13 traite le même webhook PayPal REST valide plus d'une fois.
Le fournisseur PayPal REST remplace le validateur de transaction de base de XenForo mais omet sa recherche du journal des transactions en double. L'index de la base de données n'est également pas unique. Deux livraisons octet pour octet identiques et valablement signées avec un même identifiant de transaction peuvent donc exécuter deux fois la finalisation de l'achat.
J'ai reproduit ce problème sur XenForo 2.3.12 (build 2031270) en utilisant une mise à niveau récurrente jetable. Les deux rappels ont renvoyé HTTP 200, créé des lignes de journal de paiement distinctes et prolongé le même droit d'accès. Le modèle d'attaquant nécessite un rappel authentique ou une nouvelle tentative/renvoi légitime du fournisseur ; ce bug ne forge pas la signature.
XenForo 2.3.13 contient le correctif.
Stockez localement un corps de rappel de test autorisé et ses en-têtes, puis exécutez :
python poc.py https://xenforo.example headers.json callback.json
Le script envoie exactement deux copies et n'affiche que les deux statuts HTTP. Ne validez pas les fichiers d'entrée : ils peuvent contenir du matériel de rappel en direct. Utilisez un achat jetable et restaurez son état après le test.
Découvert par Marco Paciaroni (BomboBombone).