The user clicks on Login with Phone Number on tinder.com and then they are redirected to Accountkit.com for login. If the authentication is successful then Account Kit passes the access token to Tinder for login.

Interestingly, the Tinder API was not checking the client ID on the token provided by Account Kit.

This enabled the attacker to use any other app’s access token provided by Account Kit to take over the real Tinder accounts of other users.

Vulnerability Description

Account Kit is a product of Facebook that lets people quickly register for and log in to some registered apps by using just their phone numbers or email addresses without needing a password. It is reliable, easy to use, and gives the user a choice about how they want to sign up for apps.

Tinder is a location-based mobile app for searching and meeting new people. It allows users to like or dislike other users, and then proceed to a chat if both parties swiped right.

There was a vulnerability in Account Kit through which an attacker could have gained access to any user’s Account Kit account just by using their phone number. Once in, the attacker could have gotten ahold of the user’s Account Kit access token present in their cookies (aks).

After that, the attacker could use the access token (aks) to log into the user’s Tinder account using a vulnerable API.

How my exploit worked step-by-step

Step #1

First the attacker would log into victim’s Account Kit account by entering the victim’s phone number in “new_phone_number” in the API request shown below.

Please note that Account Kit was not verifying the mapping of the phone numbers with their one-time password. The attacker could enter anyone’s phone number and then simply log into the victim’s Account Kit account.

Then the attacker could copy the victim’s “aks” access token of Account Kit app from cookies.

The vulnerable Account Kit API: