In the latest attack that shows how hard it is for users to identify phone numbers with premium call charges, a researcher has found that he could have earned millions by abusing the online phone verification systems used by Google, Microsoft, and Instagram.
Many websites and mobile apps allow users to associate a phone number with their account. This can be used for two-factor authentication or as an account recovery and verification option. Many of these systems rely on codes sent via text messages, but also offer the option to call the user and dictate such codes.
Last year, a Belgian IT security consultant named Arne Swinnen started wondering if such systems test if the numbers entered by users have premium charges attached to them and set out to test several popular services.
Swinnen started out in September with Instagram and quickly found out that the service will call user-supplied, premium-rate numbers, if the Instagram security codes sent to those numbers via SMS are not entered within a three-minute window. He also found a way to trigger such Instagram calls, which are made from California and last 17 seconds, through an API (application programming interface) every 30 seconds.
Swinnen set up a phone number that costs 0.06 British pounds per minute and was able to earn 1 pound in 17 minutes by abusing Instagram's system. The attack could have been automated by registering additional numbers and Instagram accounts to earn thousands of pounds per day.
Facebook, which owns Instagram, initially told the researcher this was not a vulnerability, but part of the way the service was intended to work. The company said it monitors and blocks abuse attempts, and those slipping through represented an accepted risk.
Facebook later fine-tuned some call-rate limits, made changes to its outbound calling service, and decided to reward the researcher with a US $2,000 bug bounty.
In February, the researcher reported a similar attack to Google. Its phone-based two-factor authentication service was also open to abuse, although using a more difficult process.
Swinnen calculated that he could steal 12 euros a day with a single Google account and a premium rate number, a sum that could be multiplied by registering more numbers and accounts.
Google responded by saying it has mitigations in place, but because of how the telecommunications industry works, it’s impossible to completely prevent such abuse from happening.
Microsoft's Office 365 trial registration, which requires phone verification, was the most ripe for abuse. The researcher found two methods of bypassing the website's existing call rate limits, allowing him to theoretically make more than 13 million calls to the same premium number.
Additionally, the service allowed concurrent calls, each lasting around 23 seconds. With a phone number that charges 0,15 euros per minute, the researcher was able to earn 1 euro in less than a minute.
Microsoft said that the actual impact of this vulnerability would have been to a third-party partner the company uses for the calling service. The vendor decided to award a $500 bounty, nevertheless, and worked to fix the issue.
While this type of attack has now been mitigated for Instagram, Google ,and Microsoft, there are more online services and apps likely to be vulnerable. Swinnen's research, which he made public Friday in a blog post, highlights how hard it is in general -- for both companies and consumers -- to differentiate between regular and premium rate numbers.