Fraude em telefonia normalmente paga o invasor diretamente, sem um comprador ou resgate no meio. Nada é roubado ou criptografado, então os sinais habituais de uma violação estão ausentes. O prejuízo aparece como gasto com chamadas.
Isso define a defesa. Você não consegue detectar a fraude procurando algo incomum no conteúdo de uma chamada. Os controles tratam exclusivamente de para onde as chamadas podem ir, quantas podem existir e quanto podem custar.
Por que vale a pena se defender disso se meu sistema está protegido?
Porque o valor de um comprometimento é imediato e a janela é curta.
Uma credencial SIP roubada, ou uma porta aberta em um PBX, o sistema telefônico empresarial que roteia as chamadas de uma empresa, gera retorno assim que é usada. O incentivo do invasor é discar o máximo possível antes que alguém perceba. Os destinos que pagam melhor são aqueles para os quais uma empresa normal nunca liga.
Esse último ponto é o que torna uma lista de permissões eficaz, e não apenas organizada. A maioria das empresas liga para um conjunto pequeno e estável de países. O invasor precisa de um conjunto específico e diferente. Qualquer coisa que force os dois a se sobreporem custa ao invasor todo o modelo de negócio dele.
Como funcionam os controles de destino?
Cada país está habilitado para o seu espaço de trabalho ou não, e as chamadas só chegam aos que você ativou.
Duas coisas distintas definem o que você pode fazer com um país, e confundi-las é o erro mais comum:
- Disponibilidade indica se o país pode ser habilitado por você.
Availablesignifica que Bird pode realizar chamadas para lá a partir da sua conta.Not supportedsignifica que não pode, e restaurar isso exige uma conversa com o suporte. - Sua chave de ativação indica se um país disponível está ligado. A alteração vale a partir do momento em que você a faz.
Então o fato de um país estar disponível não diz nada sobre se chamadas estão chegando até ele. Isso depende da chave de ativação, que é o controle que você opera.
Alguns países possuem um marcador de alto risco, que reflete tanto as tarifas quanto a exposição a fraudes. Esses são os destinos que um invasor tenta alcançar. Mantenha-os desligados a menos que a empresa realmente ligue para eles, e verifique quanto custa uma chamada para lá antes de habilitar um. A página de destinos de voz lista todos os países com sua disponibilidade e estado de ativação, e preços de voz traz as tarifas.
Uma chamada recusada por esse motivo é rejeitada com destination_not_enabled. A solução é ativar aquele país, e não tentar novamente.
A disponibilidade se aplica ao país como um todo. Um número específico dentro de um país habilitado ainda pode ser inalcançável. Isso é rejeitado como no_route_found.
no_route_found abrange mais de uma causa. Bird classifica o número que você discou antes de consultar suas configurações de destino. Ele recusa um tipo que não roteia. Taxa premium é o que importa aqui: números cuja terminação paga a pessoa que os possui, que é exatamente o que um invasor disca. Faixas de custo compartilhado e de número pessoal dividem a tarifa da chamada ou a encaminham para outra linha. Números não geográficos não pertencem ao código de área de nenhum país. Os três são recusados da mesma forma. Essas recusas são intencionais. Elas atingem os números que um invasor deseja, porque uma faixa premium dentro de um país habilitado nunca passa pela classificação. Um número genuinamente inalcançável reporta o mesmo código, então verifique o tipo do número que você discou antes de abrir um chamado.
O que limita um ataque dentro de um país que eu permito?
Três tetos, cada um dos quais recusa uma chamada por conta própria.
| Motivo da rejeição | O teto atingido |
|---|---|
daily_spend_exceeded | Teto de gasto diário de voz da sua organização |
concurrent_calls_exceeded | Total de chamadas simultâneas permitidas pela conta |
calls_per_second_exceeded | Novas chamadas realizadas mais rápido do que a conta permite |
insufficient_balance | A carteira não cobriu a chamada, que foi recusada antecipadamente |
O teto de gasto se comporta mais como um controle antifraude, porque é denominado naquilo que o invasor de fato está levando. Ele também é aplicado em um caminho diferente dos outros dois. Ele é reiniciado no início do próximo dia UTC, então uma rajada que o atinge fica contida até lá, em vez de apenas desacelerada. É também o único que não existe até você configurá-lo: uma organização sem teto diário de voz configurado não tem nenhum teto de gasto aplicado.
Os outros dois se comportam de duas maneiras que mudam como você depende deles.
Eles são verificados em ordem, não em conjunto. O teto de chamadas simultâneas é avaliado primeiro e responde imediatamente, então uma chamada que excede ambos os tetos reporta concurrent_calls_exceeded e nunca menciona a taxa de discagem. Isso importa para diagnóstico, não para defesa. Um discador de campanha pode atingir calls_per_second_exceeded sem estar nem perto do teto de chamadas simultâneas. Verifique qual você realmente recebeu antes de alterar uma configuração, porque eles têm correções diferentes e aumentar o errado não resolve nada.
Um teto cuja verificação própria não pode ser concluída admite a chamada. Se a contagem de chamadas simultâneas ou o limitador de taxa não puder ser avaliado, a chamada passa em vez de ser recusada. Portanto, esses tetos delimitam a operação normal de forma confiável, mas não são uma garantia em todas as condições. Essa é mais uma razão pela qual a lista de destinos importa: é a camada que não depende de uma consulta em tempo real.
insufficient_balance funciona como um controle sem ter sido projetado como tal. A carteira limita quanto de fraude um comprometimento pode acumular. Uma recarga automática alta remove esse limite, o que torna o valor da recarga uma decisão de fraude além de uma decisão de conveniência.
Quem pode enviar chamadas para o meu trunk?
Apenas os endereços na lista de IPs permitidos do trunk, as chaves API que ele aceita e as credenciais de sessão que ele emitiu podem enviar chamadas para ele.
Um trunk SIP decide quem pode enviar chamadas para ele, e uma chamada de qualquer outra origem é rejeitada com source_not_allowed antes que qualquer lógica de destino seja executada. Chamadas de saída também são verificadas contra seus caller IDs verificados, então uma chamada que apresenta um número não verificado para o espaço de trabalho é rejeitada com caller_id_not_verified em vez de ser realizada.
Vale auditar esses dois no mesmo cronograma da sua lista de destinos, porque uma lista de permissões permissiva anula todo o resto. Trunks SIP cobre a lista de IPs permitidos, autenticação por chave API e credenciais de sessão, e caller IDs cobre a verificação.
O que eu devo fazer na prática?
- Habilite os países para os quais você liga e nenhum outro, e trate a lista como algo a revisar periodicamente, não como algo que se configura uma vez. Um país habilitado para uma campanha de dois anos atrás é uma exposição permanente.
- Defina o limite de gasto diário do seu espaço de trabalho e dimensione-o de modo que você perceba quando ele for atingido, em vez de definir um valor que nunca dispara. Todo espaço de trabalho começa com um limite padrão; altere-o em Voice → Spend limit, até o máximo da sua organização. Um limite que nunca dispara não é um controle.
- Restrinja a lista de permissões do trunk, já que tudo o que foi descrito acima só importa para chamadas que chegaram até ali.
- Fique atento aos próprios motivos de rejeição. Uma sequência repentina de
destination_not_enabledoucalls_per_second_exceededé a aparência de um ataque quando os controles estão funcionando. Não são ruído para filtrar dos seus logs; são o alerta.
Destinos de voz cobre a habilitação e desabilitação de países, e o log de chamadas lista cada motivo de rejeição com sua correção.
Em resumo
O invasor é pago pelo destino, não por você.
Ele compromete um sistema telefônico e disca para números dos quais obtém receita. O custo cai na sua conta enquanto o lucro vai para a dele.
Países ficam desativados até você ativá-los.
Um destino precisa ser habilitado antes que chamadas cheguem até ele. Assim, o raio de impacto de um comprometimento é a lista que você habilitou, e não o mundo inteiro.
Disponibilidade e a sua chave de ativação são coisas diferentes.
Disponibilidade indica se o país pode ser habilitado por você. A chave de ativação indica se ele está ligado. Um país pode estar disponível e desligado.
Cada teto recusa uma chamada por conta própria.
Gasto diário, chamadas simultâneas e chamadas por segundo, cada um barra uma chamada sozinho. Todo espaço de trabalho tem um limite de gasto diário, que você pode alterar em Voice → Spend limit. Ele é reiniciado no início do próximo dia UTC.