Blog Series #1 — SIM swapping: por que o 2FA não deve ficar no número de celular

O código de 2FA por SMS vai para o número, não para você. Se alguém ficar com o chip, a recuperação da conta chega no aparelho errado.

José Eduardo Morini Castro4 min
Capa do Blog Series #1 com o título "SIM swapping", um cursor terracota e o identificador SMS 2FA.Capa do Blog Series #1 com o título "SIM swapping", um cursor terracota e o identificador SMS 2FA.

SIM swapping, ou troca de chip, é um ataque em que alguém convence a operadora a emitir um novo SIM com o seu número. O seu celular perde o sinal. O aparelho do atacante passa a receber as ligações e os SMS daquele número.

Isso parece um problema de telefonia. Para quem usa autenticação de dois fatores por SMS, vira um problema de conta.

O segundo fator deveria ser algo que só você controla. Um número de celular não é isso. O número pertence à operadora. O aplicativo autenticador gera o código no seu dispositivo a partir de um segredo que não viaja com o chip.

O que é SIM swapping

O atacante não precisa do seu telefone físico. Ele precisa do seu número.

Na prática, isso costuma passar pela operadora: uma portabilidade, uma “segunda via” do chip, um atendimento em que a identidade é frágil. Com o número redirecionado, o SMS deixa de ser uma mensagem para você e vira uma mensagem para quem controla o destino daquele número.

O ponto importante não é o teatro do golpe. É o modelo de confiança. Quem autentica a conta está perguntando “quem recebe SMS neste número?”, e não “quem está com o dispositivo que você cadastrou?”.

Por que o SMS não é um segundo fator

Autenticação de dois fatores existe para exigir duas coisas diferentes: algo que você sabe, como a senha, e algo que você tem.

O SMS falha nessa segunda parte. O código não fica no seu aparelho. Ele é entregue a um endereço público, o número, que a operadora pode reatribuir.

senha  +  SMS no número
              │
              ▼
         operadora
              │
              ▼
     quem estiver com o chip

Se a senha vaza, o SMS ainda pode parecer uma rede de segurança. No SIM swapping, essa rede cai junto: o atacante recebe o código de login e, pior, o código de recuperação de senha.

Muitos serviços tratam o número como canal de emergência. Esqueceu a senha? Mandamos um SMS. Nesse desenho, o segundo fator e a recuperação da conta moram no mesmo lugar. Quem pega o número pega os dois.

O aplicativo autenticador não viaja com o chip

O aplicativo autenticador, o authenticator app, funciona de outro jeito. Na hora do cadastro, o serviço e o seu dispositivo compartilham um segredo. A partir daí, o código de seis dígitos é gerado localmente, a cada 30 segundos, sem passar pela operadora.

serviço  +  segredo no app
                │
                ▼
         código TOTP
                │
                ▼
     só quem tem o dispositivo

Trocar o chip não leva esse segredo. O atacante pode receber SMS no seu número e, ainda assim, não consegue gerar o código do aplicativo.

Isso vale para o autenticador no celular, no gerenciador de senhas ou numa chave de hardware. O critério é o mesmo: o segundo fator precisa viver em um segredo ou em uma chave que você controla, não no roteamento de um número.

Há um cuidado. Se o próprio aplicativo autenticador recupera a conta pelo SMS, o problema volta pela porta dos fundos. O backup do autenticador precisa estar em outro fator, não no número que o SIM swapping sequestra.

O que fazer agora

Saia do 2FA por SMS nas contas que importam: e-mail, GitHub, nuvem, banco, gerenciador de senhas. Troque por um aplicativo autenticador. Onde existir, prefira passkeys ou uma chave de segurança.

Tire o número de celular da recuperação da conta sempre que o serviço deixar. Se a operadora oferecer PIN de portabilidade ou de atendimento, ative. Isso não substitui o autenticador, mas encarece a troca do chip.

A ordem prática é simples:

1. autenticador no lugar do SMS
2. senha única no gerenciador
3. número fora da recuperação

O 2FA por SMS ainda é melhor do que não ter segundo fator. Só não é um segundo fator de verdade. O código precisa ficar no aplicativo autenticador, não no número de celular.

Incorpore DevSecOps ao seu fluxo de trabalho com a runtz

Comece a identificar riscos de segurança. Acesse runtz.dev.