Botão voltarVoltar
Descrição do post

2 de junho 2025

Static Loop – um erro que pode matar seu ISP/ITP

O static loop é algo que, definitivamente, pode derrubar toda a sua operação se não for devidamente tratado e pode ser facilmente explorado por pessoas mal intencionadas. A causa do problema é uma rota estática para um prefixo IP (seja IPv4 ou IPv6), que aponta para um next-hop e nesse destino não existe nenhuma informação sobre o prefixo IP na tabela de rotas local, obrigando o pacote a retornar para o seu gateway default e ficando nesse loop até que expire o TTL (Time To Live) do pacote. Isso ocorre muito nos casos em que temos concentradores PPPoE (BNG) e caixas CGNAT. Vamos exemplificar com a seguinte situação:

Na figura acima temos um concentrador entregando, via PPPoE, o prefixo 198.18.0.0/24 para os clientes. Nesse caso um cliente pegou o IP 198.18.0.0/32. Esse prefixo foi inserido da tabela de rotas do BNG e por isso se alguém da Internet tentasse enviar um ping para ele, provavelmente seria respondido. Isso porque na borda existe uma rota onde diz que tudo que for para 198.18.0.0/24 deve ser encaminhado para o next-hop 172.20.0.2 e no BNG existe uma rota default apontando para a borda no IP 172.20.0.1.

Até aqui tudo funcionaria bem mas um indivíduo mal intencionado resolveu scanear sua Rede a procura de algum static loop, encontrou o IP 198.18.0.10 e então começou a disparar um ataque para esse IP descoberto.

O ataque então se inicia e um pacote com destino ao IP 198.18.0.10 chega na borda do seu Provedor. O router então encaminha o pacote para o BNG que possui o prefixo 198.18.0.0/24. O pacote ao chegar no BNG é checado na tabela de rotas para onde deverá ser encaminhado, mas só existe o prefixo 198.18.0.0/32 na tabela de rotas, que é do cliente que está conectado. Não existe qualquer outra rota para que seja entregue o pacote no IP 198.18.0.10, então só resta ao BNG devolver o pacote para a borda, através do default gateway. Então começará o processo de loop porque a borda reencaminhará o pacote novamente para o BNG e este devolverá novamente para a borda. Esse loop continuará até que o TTL do pacote se esgote e seja descartado. Vale ressaltar que esse loop resulta em um ataque de amplificação que pode derrubar sua Infraestrutura de Redes, de dentro para fora. Esse efeito foi exemplificado aqui usando o IPv4 mas o mesmo também pode ocorrer com IPv6, sendo eles privados ou públicos.

Como testar se o seu ASN possui static loop

Precisaremos de um ambiente externo e interno ao seu ASN; faça o teste de dentro do seu próprio ASN e também de fora dele. De fora do ASN pode ser através de algum VPS (Virtual Private Server) seu hospedado em algum Datacenter fora do seu ASN. Já para testes de dentro da sua rede, procure usar um sistema que dele você tenha alcance a todos os ativos da sua infraestrutura. Para testarmos usaremos um sistema GNU/Linux qualquer com o pacote fping. Aqui usaremos o Debian GNU/Linux.

# apt install fping

Após instalar você pode rodar o comando para checar um prefixo por vez dessa forma:

# fping -gae 198.18.0.0/24 2> /tmp/static_loop.txt

Ou se quiser passar em todo o seu ASN e gerar um relatório, elaboramos o comando abaixo substituindo o <ASN> pelo seu ASN, por exemplo AS65000. Não esqueça de adicionar o “AS” e o número juntos.

# >/tmp/static_loop.txt; for lista in `whois <ASN>|grep “inetnum:”|awk ‘{print $2}’| grep -v “:”`; do (fping -gae $lista 2>> /tmp/lista; cat /tmp/lista| grep -v “<-” |grep “Time Exceeded”|sort -u >> /tmp/static_loop.txt; rm -f /tmp/lista); done

O comando acima fará um scaner em todos os seus prefixos IPv4 do seu ASN e gerará um arquivo com o resultado em /tmp/static_loop.txt. Se quando acabar o arquivo estiver vazio, é porque você não possui static loop na sua rede. Parabéns!

Agora se o arquivo contiver uma listagem, sinal que você precisa acertar esses problemas antes que você seja vítima de um static loop. Abaixo um exemplo de como seria essa lista:

Não deixe sua rede com static loops, remova-os criando prefixos com discards e distance maiores. Tráfegos pequenos de 6Mbps podem gerar loops de mais de 10Gbps, podendo saturar um enlace.

Ainda não sabe resolver? Contacte-nos que podemos ajudar a resolver e trabalhar outras melhorias.

Compartilhe esse Post