Proteção contra bombing de SMS e OTP

Como proteger a sua conta e os seus formulários OTP contra bombing de SMS, flooding de OTP e fraude IRSF.

O bombing de SMS e OTP designa ataques em que um bot aciona repetidamente um formulário OTP ou de registo no seu website para gerar SMS em massa. Os motivos típicos são o assédio a terceiros ("SMS flood" sobre um número alvo), o esgotamento do seu saldo e, sobretudo, a fraude IRSF (International Revenue Share Fraud), em que os atacantes enviam SMS para números premium internacionais de custo elevado dos quais eles próprios recebem uma parte.

Auf einen Blick

  • O gatilho está quase sempre no formulário OTP: captcha, limite de frequência e tempo de espera são obrigatórios.
  • Na seven, a restrição por países é a principal forma de limitar os danos.
  • Impor a assinatura HMAC dos pedidos em conjunto com uma lista branca de IP inutiliza uma chave de API divulgada.
  • Uma subconta só serve de teto se o carregamento automático estiver desativado.
  • A 2FA, chaves de API separadas por serviço e a notificação de saldo baixo fazem parte do equipamento básico.

Nenhuma funcionalidade isolada protege contra esta classe de ataques. Só uma proteção em camadas é eficaz: primeiro na sua aplicação, depois na sua conta seven.

Onde está a verdadeira falha

Na maioria dos casos de bombing, o formulário OTP está desprotegido: sem captcha, sem limite de frequência, sem tempo de espera. O atacante chama o endpoint de envio centenas ou milhares de vezes por minuto e cada chamada gera uma SMS real. A seven pode limitar os danos, mas o gatilho tem de ser fechado por si na sua aplicação.

Medidas de proteção na sua aplicação

Estes pontos pertencem ao seu frontend e backend, não à seven:

  • Captcha antes do botão de envio. reCAPTCHA, hCaptcha, Cloudflare Turnstile ou uma deteção de bots comparável. É a medida individual mais eficaz.

  • Limite de frequência por IP, por sessão e por número de destinatário. Exemplo: no máximo 3 OTP por cada 10 minutos por número de telemóvel e no máximo 10 OTP por hora por IP.

  • Tempo de espera entre cliques de reenvio. Primeiro reenvio após 60 segundos e, depois, backoff exponencial (2, 4, 8 minutos).

  • Pré-validação de números. Verifique o formato e o operador através do Lookup antes de acionar a SMS. Assim filtra números inválidos e destinos premium exóticos antes de surgirem custos.

  • Campos honeypot e análise comportamental. Registe e bloqueie campos de formulário ocultos preenchidos, submissões invulgarmente rápidas e user agents atípicos.

Medidas de proteção na sua conta seven

Estas medidas limitam os danos caso a camada da aplicação ceda apesar de tudo.

Ativar as restrições por países

De longe a alavanca mais importante contra o IRSF. Se o seu serviço OTP serve apenas clientes de alguns países, bloqueie tudo o resto. Os ataques a números premium ficam assim sem efeito, porque a seven nem sequer entrega a SMS.

Configuração em Definições > Mensagens > Restrições por países. Para mais detalhes, consulte Restrições geográficas.

Tipp

Defina "Resto" como não permitido e adicione como permitidos apenas os países de destino de que realmente necessita. Trata-se de uma lista branca que bloqueia todos os destinos premium exóticos.

Ativar e impor a assinatura de pedidos

A seven suporta a assinatura de pedidos HMAC-SHA256 para a API REST. Cada pedido à API pode ser assinado com uma chave de assinatura separada, atribuída independentemente da chave de API. Uma chave de API roubada torna-se assim inútil por si só, desde que ative a obrigatoriedade da assinatura.

Funcionamento:

  • Três cabeçalhos acompanham o pedido: X-Signature, X-Timestamp, X-Nonce.

  • Com HMAC-SHA256 é assinada uma cadeia composta pelo timestamp, nonce, método HTTP, URL completo e hash MD5 do corpo (separados por quebras de linha).

  • O timestamp pode ter no máximo 30 segundos (proteção contra repetição). O nonce é único por pedido.

  • Configure a chave de assinatura em Developer > Settings. Na mesma secção ativa a obrigatoriedade da assinatura, para que os pedidos não assinados ou com assinatura inválida sejam rejeitados.

Documentação completa com exemplos em Bash e PHP: docs.seven.io/en/rest-api/signing.

Wichtig

Guarde a chave de assinatura separadamente da chave de API, idealmente num gestor de segredos (p. ex. AWS Secrets Manager, HashiCorp Vault). Se ambas estiverem lado a lado no mesmo .env, o efeito protetor desaparece.

Lista branca de IP de servidor para a API

Além da assinatura de pedidos, restrinja o acesso à API a IP de origem conhecidos: só são aceites pedidos dos IP dos seus servidores de aplicação; todos os outros são rejeitados com o erro 903. Isto também trava ataques em que a chave de assinatura e a chave de API são divulgadas em conjunto.

Configuração em Developer > Settings > REST API. Para mais detalhes, consulte Lista branca para aceder à API.

Uma chave de API própria por serviço

Não utilize a mesma chave para envios de marketing, SMS transacionais e OTP. Uma chave por serviço significa que uma única chave divulgada pode ser desativada de imediato sem interromper outros canais de envio. Consulte Onde encontro a minha chave de API? e Desativação de chaves de API não utilizadas.

Subconta apenas como teto rígido, não com o carregamento automático ativo

Uma subconta para o serviço OTP separa o saldo e os relatórios. No entanto, só funciona como teto de danos se o carregamento automático estiver desativado e a alimentar manualmente. Caso contrário, com um limiar baixo o carregamento é simplesmente feito com mais frequência e o dano total é o mesmo ou superior.

Achtung

O carregamento automático numa subconta OTP anula o efeito de teto. Se pretende um limite rígido, desative o carregamento automático e carregue manualmente.

Configuração recomendada:

  • uma subconta própria "OTP" com a sua própria chave de API

  • carregamento automático desativado

  • carregamento manual com um orçamento mensal fixo (p. ex. 50 EUR)

  • quando a subconta fica vazia, o envio para automaticamente

Detalhes sobre a configuração: Subcontas.

Notificação de saldo baixo para vários destinatários

Uma vaga de envios invulgar leva inevitavelmente a uma rápida descida do saldo. Defina um limiar e pelo menos dois endereços de destinatários (técnico e faturação), para que o alerta chegue também quando uma pessoa estiver de férias. Consulte Notificação de saldo baixo.

Segurança da conta

Se já houver um ataque em curso

  1. Rode ou desative de imediato a chave de API nas definições de programador. Assim, qualquer envio adicional para de imediato.

  2. Reforce as restrições por países e bloqueie todos os países que não sejam de destino.

  3. Contacte o suporte através de support@seven.io, indicando o ID da sua conta e o intervalo de tempo. Ajudamos a analisar os padrões de envio e a conter o ataque. Tenha em atenção: os custos de SMS acionadas por uma aplicação desprotegida do cliente não são, em regra, reembolsados.

  4. Proteja o lado da aplicação antes de reativar o envio. Integre um captcha, ative o limite de frequência e analise os registos.

O nosso suporte terá todo o gosto em ajudar em incidentes concretos.

Última atualização: 21 de setembro de 2026

Isto respondeu à sua pergunta?

Artigos relacionados