mythsthe appsTwilio Authy2024identity and authentication

everyone assumed:

an endpoint with no login isn't a real exposure

what was actually true:

A read-only endpoint with no login is still a credential check if it confirms which accounts exist.

how it happened

  1. whothreat grouphuge phone number list
  2. the gapunauthenticated endpointconfirmed Authy accounts
  3. the result33.4M phone numbersleaked
the gap that let it happen the result

what everyone assumed

An endpoint that requires no authentication feels like it carries nothing worth protecting. It returns no passwords, no messages, no balances, just a yes or a no. Treating it as harmless is the reasonable read, because by itself it does almost nothing, and almost nothing is easy to leave alone.

what happened

The endpoint kept answering. Fed one number at a time, it confirmed or denied an account, which is unremarkable. Fed a very large list of numbers, one after another, it became something else: a way to sort the world’s phone numbers into Authy users and everyone else. The difference between safe and exposed was not the endpoint changing. It was the volume of questions, and nobody was counting the questions.

step by step

  1. an endpoint confirms whether a number has AuthyWithout authentication.
  2. a group feeds it a massive listNobody counts the questions.the assumption breaks here
  3. late June 202433.4 million numbers surfaceWith account IDs and device counts.
  4. 1 July 2024Twilio secures the endpoint

how it surfaced

A threat group fed it a massive list and kept what came back. In late June 2024 a file surfaced holding 33.4 million phone numbers tied to Authy accounts, along with account IDs and device counts. Twilio confirmed the access on July 1, secured the endpoint so it would no longer answer unauthenticated requests, and stated that no internal systems or other sensitive data were reached. The app built to protect logins had enumerated its own users’ numbers.

A read-only endpoint with no login is still a credential check if it confirms which accounts exist.

At scale, “is this a valid account” becomes a list, and the list is the exposure.

picture it at a company like yours

The company here is made up. The other two paths are not: they happened, and each links to the story.

your company
a normal dayYour app can tell anyone whether a phone number is registered.
the gap nobody seesNobody counts how often that question is asked.a lookup nobody rate-limits
  1. in this story
    the day it mattersSomeone checks a huge list of phone numbers and keeps the matches.
    what it costs youA list of your users' numbers ends up for sale.
  2. or it goes like this
    howA partner lookup answers one order number after another, all day, for weeks.
    what leavesnames, addresses and orderswho ends up with ita seller on a criminal forum
    it happenedDell, 2024
  3. or it goes like this
    howAn 'is this email registered' check is fed a huge list of addresses.
    what leavesa list of your users with nameswho ends up with itbuyers of breach data
    it happenedTrello, 2024

sources

  1. Twilio's Authy App Attack Exposes Millions of Phone Numbers ,
  2. Twilio warns Authy users to update app following unauthenticated endpoint access ,
  3. Twilio's Authy Breach: Attack via an Unsecured API Endpoint ,

← all myths

your turn

what you can do about it

  1. this week

    List the endpoints that respond without authentication and ask one thing of each: if someone called it a million times, what would they have at the end.

    Somewhere in your product there is probably an endpoint that answers a small question without asking who is asking: a lookup, a "does this email exist," a status check built for convenience. The Authy gap was that question, never asked of one helpful little route.

  2. go deeper

  3. if you're not sure where to start

    Run the offboarding checklist on one leaver. It covers every account and token to close when someone leaves.

    open the checklist →

the letter · every two weeks

one access gap in your inbox, with the fix.

Every issue takes one way access creeps in, shows a real incident where it went wrong, and ends with one thing to check that week. Written for the people who run the tools, without a security team behind them.

  • 1one mechanism, explained plainly
  • 2one real incident, taken apart
  • 3one step you can take on Monday

get the next issue

One email every two weeks. Your address stays here and is never passed to vendors. One click to unsubscribe. Privacy.