Loan Files Reachable by Swapping One Number in the URL
A Gurugram-based NBFC was six weeks from launching its instant personal loan app and needed a pre-launch assessment before its RBI cybersecurity self-audit was due.
The loan-application API pulled up a customer's file — PAN, salary slips, bank statement — using a plain sequential ID. Logged in as any customer, changing that one number returned someone else's documents. A second issue: the OTP verification endpoint had no attempt limit, so a six-digit OTP could realistically be guessed within its validity window.
"We assumed the frontend hid the ID. It didn't matter — the API never checked who was asking." — Engineering Lead, client team
full-breakdown --show ›
Customer-facing web app, mobile API layer, and the OTP/authentication service. Grey-box — we were given a normal test account, same as any customer.
Standard API mapping through the app first, then manual parameter testing on every endpoint that took an ID. The IDOR (an access-control bug where the app trusts an ID in the request instead of checking ownership) on the document endpoint was found on day 2. The OTP rate-limiting gap came up while writing the report, during a re-check of the login flow.
Ownership checks added server-side on all document and application endpoints; OTP endpoint got a lockout after five attempts plus a cool-down. Both shipped inside the same sprint, verified in a free re-test before launch.