- What I found
- The endpoint that receives payment notifications does not check the provider's signature, so anyone who finds the address can mark an order as paid. It also does not record which notifications it has already handled, so a repeated notification is processed again.
- Why it matters
- Orders can be marked as paid without payment, and a retried notification can send a customer two confirmations or credit their account twice. Both are hard to untangle once they reach your accounts.
- Evidence
- File and line references, with the request used to reproduce it, are in the full report.
- Recommended fix
- Verify the provider's signature on every notification and reject anything that fails.
- Store each notification's identifier and skip any that has already been handled.
- Add tests for a forged notification and a repeated one.
- Rough effort
- 2 to 3 days (illustrative)