Illustrative only - not an engagement finding
Signed-In Users Can Access Another Customer's Records
Critical
See where this finding applies on the diagrams: application zone · upload and intake step · CP1 public ingress
Illustrative only - not an engagement finding
Signed-In Users Can Access Another Customer's Records
- Business summary
- Sign-in proves who a caller is, but it does not prove that the caller may read or change every customer record exposed by an API.
- Assessment profile
- Expected fix Verification
-
-
Expected fix Derive record scope server-side FastAPI authentication context: Determine customer and record scope from the signed-in user and trusted server data.Verification Ignore client-supplied scope Changing a customer or record identifier cannot change the scope derived for the signed-in user.
-
Expected fix Scope every data query Cosmos DB and Blob Storage adapters: Include the authenticated customer in every record and document lookup.Verification Prevent unscoped access Database and storage traces show that unauthorized identifiers never reach an unscoped query.
-
Expected fix Authorize the resolved object FastAPI service and data-access boundary: Recheck the final resource before every read, update, retry and deletion.Verification Deny cross-customer operations A user assigned to one test customer receives 403 for every operation on another customer's record.
-
Expected fix Hide unauthorized record existence FastAPI authorization error handling: Return the same public response whether an unauthorized record exists or not.Verification Prevent record discovery The response does not reveal whether the unauthorized target record exists.
-
Expected fix Centralize the policy Shared server-side authorization component: Use one owned policy from every FastAPI route and background operation.Verification Cover every operation consistently All read, update, retry and deletion paths use the same policy, while authorized operations on the user's own records still work.
-