Como o Gmail copia códigos 2FA: parser, segurança e alternativas

Como o Gmail copia códigos 2FA: parser, segurança e alternativas

Eu perdi a conta de quantas vezes, no meio de um deploy ou subindo um servidor, precisei alternar entre terminal, navegador e aplicativo autenticador só pra copiar um código de 2FA. É uma fricção invisível, mas que consome atenção e quebra o fluxo de trabalho. Por isso, quando vi no Eurisko.com.br que o Gmail está testando um botão “Copiar código” diretamente na caixa de entrada, minha primeira reação foi: finalmente. A segunda reação foi de desconfiança — porque mexer com clipboard em apps de autenticação é um assunto que precisa de nuance.

Por que esse atalho importa (e por que ele é só a ponta do iceberg)

Na minha experiência, o maior gargalo do 2FA não é o código em si — é o atrito cognitivo. Você está logando no AWS, no GitHub, no painel do seu provedor de cloud, e cada serviço exige um aplicativo autenticador diferente, ou usa SMS, ou manda e-mail. O novo botão do Gmail ataca exatamente essa fricção. Segundo o Eurisko, o recurso apareceu como uma cápsula logo abaixo do assunto da mensagem, com o próprio código exibido dentro. Um toque e ele vai para a área de transferência.

Mas antes de comemorar, vale entender o que está acontecendo nos bastidores. O Gmail está fazendo detecção de padrão no conteúdo do e-mail — provavelmente regex simples casando sequências de 4 a 8 dígitos precedidas por palavras como “verification”, “code”, “código”, “token”. Se você já implementou parsing de e-mail transacional, sabe como isso é traiçoeiro.

O básico do TOTP que todo dev precisa ter na cabeça

O 2FA baseado em código temporário usa o padrão TOTP (Time-based One-Time Password), definido pela RFC 6238. A fórmula é mais simples do que parece:

import hmac, hashlib, struct, time

def generate_totp(secret: bytes, interval: int = 30, digits: int = 6) -> str:
    counter = int(time.time()) // interval
    counter_bytes = struct.pack(">Q", counter)
    hmac_digest = hmac.new(secret, counter_bytes, hashlib.sha1).digest()
    offset = hmac_digest[-1] & 0x0F
    code_int = (
        (hmac_digest[offset]     & 0x7F) << 24 |
        (hmac_digest[offset + 1] & 0xFF) << 16 |
        (hmac_digest[offset + 2] & 0xFF) << 8  |
        (hmac_digest[offset + 3] & 0xFF)
    )
    return str(code_int % (10 ** digits)).zfill(digits)

# Exemplo com secret base32 (como vem no QR Code)
import base64
secret = base64.b32decode("JBSWY3DPEHPK3PXP")
print(generate_totp(secret))

Isso é essencialmente o que o Google Authenticator, Authy e Microsoft Authenticator fazem. O segredo nunca sai do seu dispositivo, e o servidor só precisa verificar se o código gerado no mesmo intervalo de 30 segundos bate. Agora, quando o serviço te manda esse código por e-mail em vez de usar TOTP, ele está implicitamente admitindo uma fraqueza: ou não implementou TOTP de verdade, ou está te mandando um código estático de uso único.

O que o Gmail está fazendo, tecnicamente falando

O “Copy code” não é mágica. É um parser rodando no cliente ou servidor do Gmail que identifica o token, extrai via regex e injeta um botão na renderização da mensagem. O 9to5Google flagrou isso em 19 de setembro, e o Google não comentou oficialmente — comportamento clássico de feature em rollout gradual via flag server-side.

Quando uso esse tipo de feature em produção, percebo três pontos críticos:

  • Confiabilidade do parser: e-mails de confirmação vêm nos mais variados formatos. Um template bem-feito coloca o código entre tags semânticas; um template mal-feito enfia o número no meio de um parágrafo em inglês com mil distrações.
  • Localização: o regex precisa capturar padrões em múltiplos idiomas. Bancos brasileiros mandam “Seu código é 123456”, mas serviços gringos mandam “Your verification code is 123456”.
  • Privacidade: exibir o código na própria interface do e-mail pode ser conveniente, mas transforma o Gmail num alvo ainda mais valioso para quem tem acesso físico ou remoto à sua conta.

Na Prática: o atalho existe, mas você deveria testar o quão seguro ele é

Quando esse recurso chegar na sua conta, sugiro testar três cenários:

  1. E-mail legítimo de banco ou exchange: veja se o botão aparece e se o código extraído bate com o do corpo da mensagem.
  2. E-mail antigo arquivado há meses: alguns códigos expiram em 5 minutos, outros em 30. Copiar um código vencido não vai te ajudar, mas vai te ensinar a confiar menos no atalho.
  3. E-mail de phishing que imita um serviço real: aqui mora o perigo. Se o atacante consegue te mandar um e-mail com aparência legítima, o botão vai copiar o código dele, não o do serviço real. Voltar para o app e colar vai te autenticar contra o atacante.

O problema do clipboard que ninguém quer discutir

Cuidado com essa armadilha: no Android, até a versão 10, qualquer app podia ler a área de transferência em background sem nenhuma permissão explícita. Apps de rede social já foram pegos fazendo exatamente isso — lendo clipboard para rastrear usuários. No iOS, a partir do 14, o sistema mostra um aviso quando um app cola conteúdo, mas a leitura silenciosa continuou possível por anos.

Hoje, no Android 13+ e iOS 16+, o sistema operacional restringe bastante o acesso ao clipboard em background. Mas confiar cegamente que “está seguro” é um erro clássico de quem trabalha com segurança. Quando copio um código sensível, eu sigo uma rotina:

  • Copio e colo imediatamente, sem deixar o código parado no clipboard.
  • Em seguida, copio qualquer outro texto aleatório para sobrescrever.
  • Se possível, uso um gerenciador de senhas com autofill de TOTP integrado — Bitwarden, 1Password e Proton Pass já fazem isso. Aí o código nem passa pelo clipboard do sistema.

Erros Comuns que devs cometem com 2FA por e-mail

Quando uso serviços que mandam 2FA por e-mail, percebo erros que se repetem obsessivamente. Anota aí:

  • Confundir TOTP com SMS: SMS depende da rede telefônica, que é interceptável via SIM swapping. TOTP é local. Códigos por e-mail são os piores dos dois mundos — dependem da segurança da sua conta de e-mail.
  • Implementar TOTP sem rate limiting no servidor: o código tem 6 dígitos, ou seja, 1 milhão de combinações. Em 30 segundos, um atacante que já tem a senha pode tentar várias centenas de combinações via brute force se você não limitar tentativas.
  • Não invalidar códigos antigos: se você permite reuso de código dentro da janela de validade, está criando uma vulnerabilidade. Cada código deve ser usado uma única vez.
  • Aceitar 2FA por e-mail como padrão em apps internos: em times de engenharia, o padrão deveria ser TOTP ou hardware key. E-mail é fallback, não primeira opção.
  • Esquecer o secret seed no versionamento: já vi repositórios com o FA_SECRET commitado por engano. Se você usa libs como pyotp ou otplib, o segredo precisa estar em secret manager, nunca no código.

Alternativas que resolvem o problema de verdade

O atalho do Gmail é um band-aid elegante, mas a solução de longo prazo para devs e times de engenharia é outra. Aqui está o que eu recomendo, em ordem de robustez:

1. Hardware keys (FIDO2 / WebAuthn)

YubiKey, Titan Key, ou qualquer dispositivo compatível com WebAuthn. O segredo criptográfico nunca sai do hardware, não tem código para copiar, não depende de e-mail. É o padrão-ouro. GitHub, Google e Cloudflare já exigem isso para funcionários.

2. Passkeys

Evolução do FIDO2 que elimina a senha também. Funciona via biometria no dispositivo. Suporte amplo em 2026, e a fricção é menor que TOTP porque não há código para digitar.

3. TOTP com app dedicado + autofill

Se você precisa manter compatibilidade com sistemas legados, use um gerenciador de senhas que faz autofill do TOTP. Mais seguro que copiar do e-mail e mais rápido.

4. SMS como último recurso

Só quando não houver alternativa. E mesmo assim, habilite SIM PIN no seu chip.

Comparando o novo atalho com o status quo

Método Velocidade Segurança Dependência de e-mail
2FA por e-mail (botão Gmail) Alta Baixa–Média Total
TOTP via app autenticador Média Alta Nenhuma
Hardware key (FIDO2) Alta Muito alta Nenhuma
SMS Alta Baixa Nenhuma

FAQ

O botão “Copiar código” do Gmail já está disponível para todos?

Não. Segundo o Eurisko, o recurso foi observado em testes pelo 9to5Google em 19 de setembro. O Google não anunciou oficialmente, então é rollout gradual via flag.

Copiar código do Gmail é seguro?

É mais seguro que digitar manualmente, mas menos seguro que TOTP nativo. O risco principal é a conta de e-mail comprometida: quem tiver acesso ao seu Gmail vê os códigos. Habilite 2FA no próprio Gmail com hardware key ou passkey para mitigar.

Posso usar esse atalho para confirmar login em qualquer site?

Depende do site. Muitos serviços não enviam código por e-mail — só TOTP. Outros usam autenticação push via app. O botão só aparece quando o Gmail detecta um padrão compatível na mensagem.

O que é mais seguro: TOTP no Google Authenticator ou 2FA por e-mail?

TOTP no Authenticator é significativamente mais seguro. O segredo nunca trafega pela internet, e o servidor valida localmente. E-mail depende da segurança da sua caixa de entrada, que é um alvo muito mais visível.

Como implementar TOTP corretamente no meu app?

Use libs mantidas: pyotp em Python, otplib em Node, rotp em Rust. Implemente rate limiting, invalide códigos após uso e considere fortemente migrar para WebAuthn se o contexto permitir.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.