Vazou o token do bot? O que fazer agora

Redefina o token agora: no Discord, aba Bot do Portal de Desenvolvedores, botão Reset Token; no Telegram, o comando /token no BotFather. Depois confirme que o valor vazado deixou de funcionar.

Atualizado em 6 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Invalidar o token vazado antes que alguém o use
  • Descobrir o que um invasor pode ter feito com o bot
  • Trocar o token na hospedagem e evitar um novo vazamento
Nesta página

O token do bot é a senha dele. Quem o tem entra no Discord ou no Telegram como o seu bot, sem precisar de mais nada: nem usuário, nem código de verificação. Se ele apareceu num repositório público, num print, num log ou numa conversa, trate-o como comprometido a partir desse momento.

A correção principal leva um minuto. O que demora é descobrir o que foi feito com o token e garantir que o novo não vaze do mesmo jeito.

Vazourepositório, print, log ou conversa1Redefinir o tokenPortal do Discord ou @BotFather2Atualizar na hospedagemvariável de ambiente e reiniciar3Auditar o servidorregistro de auditoria e webhooks4Limpar o histórico do Gitpor último: é higiene, não segurançajanelade riscobot offline
Redefinir primeiro fecha a janela de risco; o bot só fica offline até o token novo chegar à hospedagem.

O que fazer nos primeiros minutos?#

Siga esta ordem. Não comece pela limpeza do repositório.

  1. Redefina o token. É o único passo que tira o poder do valor vazado.
  2. Atualize o token novo onde o bot roda e reinicie o processo.
  3. Audite o servidor ou o chat em busca de ações que você não fez.
  4. Limpe o código e o histórico do Git.
  5. Corrija a causa para o próximo token não vazar.

Quanto antes você fizer o passo 1, menor a janela de ataque. Robôs varrem repositórios públicos atrás de tokens, então não espere.

Como redefinir o token do bot?#

Discord#

No Portal de Desenvolvedores, abra o seu aplicativo, entre na aba Bot e clique em Reset Token, confirmando em seguida. Isso invalida todos os tokens antigos do bot, conforme o guia do discord.js. Copie o novo valor na hora e guarde-o direto na variável de ambiente.

Depois da redefinição o bot fica offline até você atualizar o token no lugar onde ele roda. Isso é esperado.

Telegram#

Abra uma conversa com o @BotFather e envie /token. A documentação do Telegram indica esse comando quando o token está comprometido ou foi perdido. Escolha o bot e o BotFather devolve um token novo. Outra opção fica em /mybots: escolha o bot, depois API Token e Revoke current token. Em qualquer caso, confirme em seguida que o token antigo foi recusado (veja abaixo).

O Discord ou o GitHub invalidam o token por mim?#

Não dependa disso. O GitHub tem um padrão de secret scanning para o token de bot do Discord (discord_bot_token), marcado como padrão de parceiro e com suporte a push protection. O token de bot do Telegram (telegram_bot_token) aparece na lista sem parceiro e sem push protection. Detalhes na lista de padrões do GitHub.

Mesmo para o Discord, a documentação não garante que o token seja redefinido automaticamente, e a detecção só vale para repositórios do GitHub. Token colado em print, em canal de suporte ou em log não passa por esse filtro.

O que um invasor consegue fazer com o token?#

Tudo o que o bot pode fazer, limitado pelas permissões que ele tem nos servidores. O guia do discord.js lista o risco típico: spam em todos os servidores do bot, DMs em massa, apagar canais, expulsar ou banir membros e fazer o bot sair dos servidores.

Por isso o dano depende das permissões. Um bot com Administrador pode tudo; um bot que só lê e responde mensagens faz bem menos. É um bom motivo para dar ao bot só o necessário.

Redefinir o token não desfaz o que já foi feito. Também não remove o que o invasor criou e que não depende do token, como webhooks: a URL de um webhook carrega o próprio token, então ele continua funcionando até ser apagado, segundo a documentação de webhooks.

Como saber se alguém usou o token?#

No Discord#

Abra as configurações do servidor e veja o Registro de auditoria. As entradas ficam guardadas por 45 dias, e a documentação do Discord diz que é preciso a permissão VIEW_AUDIT_LOG para vê-las. Procure por:

  • canais, cargos ou convites criados ou apagados que você não reconhece;
  • webhooks novos (apague os suspeitos);
  • membros banidos ou expulsos sem motivo;
  • mudanças de permissão em cargos.

Confira também a lista de servidores onde o bot está. Se houver um servidor desconhecido, tire o bot de lá.

Confirmar que o token antigo morreu#

Teste se o token vazado ainda é aceito. A API do Discord recebe o token no cabeçalho Authorization: Bot, como descreve a referência da API:

bash
OLD_TOKEN="cole-aqui"
curl -s -o /dev/null -w "%{http_code}\n" \
  -H "Authorization: Bot $OLD_TOKEN" \
  https://discord.com/api/v10/users/@me

200 significa que o token ainda vale e a redefinição não pegou. 401 (não autorizado) é o resultado esperado de um token invalidado. No Telegram, o teste equivalente é o método getMe da Bot API, que deve responder 401 para o token antigo:

bash
curl -s -o /dev/null -w "%{http_code}\n" "https://api.telegram.org/bot$OLD_TOKEN/getMe"

Depois do teste, limpe o histórico do terminal.

Como trocar o token sem deixar o bot fora do ar por muito tempo?#

O essencial é ter um só lugar onde o token mora. Se ele estiver espalhado por vários arquivos, você vai esquecer algum.

  1. Leia o token de uma variável de ambiente, nunca de uma string no código:
js
// index.js (discord.js v14)
import { Client, Events, GatewayIntentBits } from "discord.js";

const token = process.env.DISCORD_TOKEN;
if (!token) throw new Error("DISCORD_TOKEN não definida");

const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, () => console.log(`Online como ${client.user.tag}`));
client.login(token);
  1. Atualize o valor da variável na hospedagem e no .env local.
  2. Reinicie o bot e confira o log.

Se o bot não voltar, veja por que o bot do Discord fica offline: um token antigo esquecido em outro ambiente (teste, CI, outra máquina) é uma causa comum.

Como limpar o repositório depois?#

Só depois de redefinir. A documentação do GitHub diz que, se o dado é uma credencial, revogá-la ou trocá-la pode bastar, e reescrever o histórico nem sempre é necessário.

Primeiro descubra onde o token está no histórico:

bash
git log --all -S"parte-do-token" --oneline

Se um .env inteiro foi commitado, o GitHub documenta o git-filter-repo (versão 2.47 ou mais nova) com --sensitive-data-removal:

bash
git-filter-repo --sensitive-data-removal --invert-paths --path .env
git push --force --mirror origin

Isso muda os hashes dos commits, remove assinaturas e não apaga forks nem clones de outras pessoas. O passo a passo completo, com os cuidados, está em chave de API exposta no GitHub. Como o token já foi redefinido, essa limpeza é higiene, não segurança.

Como evitar que o token vaze de novo?#

Como fazer isso na Square Cloud#

Na Square Cloud, os passos 2 e 3 da troca (atualizar o valor e reiniciar) acontecem no mesmo lugar, sem tocar no código. O token mora numa variável de ambiente da aplicação, como o DISCORD_TOKEN do exemplo, que você edita no painel, pela API, pela extensão do VS Code ou pela CLI, com app env set e depois app restart. A mudança vale no próximo restart, sem rebuild, e outra aplicação da mesma conta não consegue ler esse valor.

Para confirmar a volta, abra os logs em tempo real no painel, na CLI, no VS Code ou no app de celular e procure a linha Online como ... do exemplo. Se você seguiu a dica de um token por ambiente, cada aplicação (teste e produção) tem as próprias variáveis, então trocar o token de uma não derruba a outra. O painel também importa um .env e exporta o conjunto como KEY=VALUE; deixe o arquivo fora do ZIP e do repositório, para que o token só exista ali.

A redefinição em si continua sendo feita no Portal do Discord ou no BotFather, e a auditoria do servidor também é sua. Veja como funcionam as variáveis de ambiente e o que a plataforma oferece para bots.

Infraestrutura

Mitigação de DDoS L3/L4/L7 e WAF em todos os planos

Saiba mais

Perguntas frequentes

Apagar o commit com o token resolve?

Não. O Git guarda o histórico, e o token pode ter sido copiado por forks, clones e robôs de varredura. Só redefinir o token fecha a porta.

O Discord invalida o token sozinho quando ele aparece no GitHub?

Não conte com isso. O GitHub tem um padrão para tokens de bot do Discord e avisa o parceiro, mas a documentação não promete a redefinição. Redefina você mesmo.

E se o token vazou no Telegram?

Fale com o @BotFather e use o comando /token para gerar um novo. A documentação do Telegram indica esse comando para token comprometido ou perdido.

Preciso criar um bot novo?

Normalmente não. Redefinir o token mantém o mesmo bot, nos mesmos servidores. Só atualize o valor onde o bot roda e reinicie.

Próximo artigoO que é ataque DDoS e como funcionaUm ataque DDoS usa milhares de máquinas para inundar um servidor com tráfego até ele sair do ar. Veja os três tipos, como funciona e como identificar.

Mais em Segurança

Ver todos os 10 artigos