TL;DR: GraphQL and third-party API flaws in a FinTech platform let researchers submit unauthorized transactions and retrieve customer PII, according to SALT. The real lesson is that transport encryption and authenticated sessions do not compensate for missing request-level authorisation and partner API governance, illustrating broken authentication, broken object level authorization, and excessive data exposure in API-driven mobile services.
Editorial analysis by NHI Mgmt Group, based on content published by Salt: “API Threat Research: GraphQL Authorization Flaws in Financial Technology Platform”.
Key questions
Q: What breaks when GraphQL APIs do not enforce object-level authorization?
A: The application can authenticate a user and still allow that user to access or change records they do not own.
Q: Why do encrypted API sessions still leak data when authorization is missing?
A: Encryption protects the connection, not the decision about who may access a resource.
Q: What are the signs that a partner API is creating hidden authorization risk?
A: Look for unauthenticated endpoints, excessive response fields, and receipt or record lookups that work with only a transaction ID.
Practitioner guidance
- Enforce object-level authorization on every GraphQL resolver Verify resource ownership on each resolver and nested field, especially where a single query can expose or change multiple objects.
- Bind transaction requests to server-side identity context Compare the caller’s authenticated identity to the target account, recipient, and transaction scope before execution.
- Review partner API endpoints as part of the authorization boundary Inventory third-party APIs that return receipts, account details, or transaction metadata, then test whether they enforce authentication, least privilege, and response minimisation.
Bottom line: GraphQL flexibility can hide authorization failures until an attacker manipulates object identifiers or nested queries.
Explore further
View Full Forum → | NHI Foundation Course → | Our Services → | Read the full analysis →
GraphQL authorization debt is the real control problem here. The issue is not that GraphQL is inherently insecure, but that its flexibility raises the cost of getting authorization right on every resolver and downstream API call. Where teams rely on session authentication alone, they accumulate authorization debt across fields, objects, and partner flows. Practitioners should treat GraphQL as an authorization architecture challenge, not just an API syntax choice.
A question worth separating out:
Q: How should teams govern third-party APIs that sit inside payment flows?
A: They should treat them as part of the transaction control boundary, not as simple data sources. That means validating authentication, limiting returned fields, and testing whether the partner endpoint can be used to infer or alter customer activity without explicit permission.
👉 Read our full editorial: GraphQL authorization failures expose transaction and PII risk