An API has user-facing and admin endpoints. Authentication middleware runs on all of them — every request must have a valid JWT. But the admin endpoints have no additional role check. The middleware confirms “this is a real token” and passes the request through. The admin function executes without ever asking “does this user’s role include admin access?”
A free Bumble account uses the app normally while watching API traffic in a proxy. They see premium features return “upgrade required.” They try calling the same endpoint with their free token directly — the upgrade check only lived in the UI, not the API. They also try /api/v1/premium/, /api/admin/ — any returning 200 instead of 403 is a BFLA.