Critical

Pre-registration account takeover on a vehicle OEM

Sector
Automotive, consumer portal
Test type
Public bug bounty
Severity
Critical
Year
2026

Two GraphQL mutations, on two hosts, neither of them shown as a pair in the UI.

The first created an identity for any address that was not already a credentialed consumer, and returned the internal user id. The second, on the business portal, accepted that id, a password we chose, and a default invite code. Login with that password returned the MFA-next step. A wrong password returned unauthenticated. The inbox was not required.

Addresses that were already credentialed were rejected. The hole is the window before the real owner signs up, including mailboxes that existed only as stubs.

A sibling on the fleet portal distinguished provisioned internal mailboxes from absent ones, and exposed a 6-digit one-time code on the password-set mutation with no useful rate limit. We did not run that code against a real employee mailbox. MFA on the consumer path still fires. For a mailbox we own, we finish MFA and receive tokens. For a mailbox the victim owns, the password is ours and the victim receives the code.

What we proved

Three disposable mailboxes we controlled: create, set the password with the default invite code, login accepts that password and rejects a wrong one.

What this is not

Not a login to a named employee's car account. A broken registration and invite-code control, proven on identities we created.

Why a scanner misses it

The UI never offers that invite code. The two mutations live on two hosts. The field names were in the bundle, not in the docs.

Buyer takeaway: Provisional and invite flows are authentication. A default code is a password.

Want This Level of Testing on Your Application?

Tell us about your website, API or AI-built app. We start with a free initial security review.

Live Chat Support
Our website uses cookies, which help us to improve our site and enables us to deliver the best possible service and customer experience. See our policy Accept