Critical

Sandbox payer login accepted any one-time code

Sector
Open banking / payments
Test type
Public bug bounty, sandbox authentication API
Severity
Critical inside the sandbox
Year
2026

The sandbox user-authentication API identified a payer from an email address or from a payment id, plus the public client id. The response included a user id and masked email and phone.

The next call was the one-time-code check for the "remember me" step. Any six-digit code was accepted. The response was a valid id token for that payer, plus the unmasked email and phone.

What we proved

Identify, then authenticate with a code that was not the one sent to the payer. The token was issued. Wrong-shape input was rejected, so this was not "the endpoint ignores the body."

What this is not

Not a production payer. The host was the sandbox authentication API. We do not claim production money movement. A sandbox login that accepts every code is still the flow integrators copy, and it discloses the full contact fields of sandbox users.

Why a scanner misses it

A login form that "sends a code" looks like MFA. The bug is that the verify step does not check the code. Tools that stop at "OTP field exists" mark it passed.

Buyer takeaway: Treat the sandbox auth host as production auth. A remember-me code that is not checked is a password made of six digits, and then not even those.

Want This Level of Testing on Your Application?

Tell us about your website, API or AI-built app. We start with a free initial security review.

Live Chat Support
Our website uses cookies, which help us to improve our site and enables us to deliver the best possible service and customer experience. See our policy Accept