Connected device API: auth that was not
A focused API assessment of a connected health device that found an authentication bypass on the pairing flow.
Tools used
- Burp Suite Pro
- Frida
- mitmproxy
- jadx
- Python
The problem
A device maker shipped a companion app and cloud API for a connected health monitor. They needed assurance that one customer could never reach another customer's readings.
The approach
I proxied the mobile app, reverse-engineered the pairing and sync endpoints, and tested the authorisation model between device, app and cloud. The pairing flow trusted a device identifier the app sent, with no binding to the authenticated user, which allowed reading another device's data by guessing identifiers.
The outcome
Reported a cross-customer data-access bypass with a proof of concept and a clear fix: bind every device to an authenticated owner server-side and reject unbound requests. The fix shipped in the next firmware and app release, and I verified it.
Context
Scope covered the companion mobile app, the pairing flow and the cloud sync API. Physical device tampering was out of scope.
Key finding
The pairing endpoint accepted a device identifier without binding it to the authenticated account, so a user could sync a device that was not theirs. Health readings are sensitive, so this was treated as critical despite needing a valid account.
Outcome
Server-side ownership binding closed the gap. The engagement also prompted the team to add authorisation tests to their release pipeline.