Atacantes podem expor VPNs com base em roteamento
(leviathansecurity.com)- TunnelVision (CVE-2024-3661) explora um recurso existente do DHCP para desviar o tráfego do usuário para fora do túnel VPN, e nesse processo os pacotes não são criptografados pela VPN
- O atacante pode injetar rotas mais específicas com a opção 121 do DHCP para criar caminhos que têm prioridade sobre a interface virtual da VPN e enviar o tráfego pela interface física
- O ataque é possível se o alvo aceitar um lease DHCP controlado pelo atacante e se o cliente implementar a opção 121; nos testes, Windows, Linux, iOS e macOS foram afetados, enquanto o Android ficou de fora
- O canal de controle da VPN continua ativo, então o usuário ainda vê a conexão como estabelecida; nos casos observados, o kill switch também não impediu o vazamento de tráfego
- Os namespaces de rede do Linux podem ser uma solução robusta, mas mitigações baseadas em firewall podem criar negação seletiva de serviço e canais laterais para inferência de destino do tráfego
TunnelVision e o decloaking de VPN
- TunnelVision é uma técnica de rede que contorna o encapsulamento da VPN e força o tráfego do usuário a sair fora do túnel
- O atacante pode usar o DHCP (Dynamic Host Configuration Protocol) para fazer com que os pacotes do alvo sejam transmitidos sem criptografia pela VPN
- Como o canal de controle da VPN permanece ativo, o usuário continua vendo que está conectado à VPN; esse efeito é chamado de decloaking
- Essa técnica pode ser possível desde 2002, e após a divulgação foi confirmado que já existiam pesquisas anteriores sobre a opção 121 do DHCP e seu impacto em VPNs desde pelo menos 2015
- 2015: Hardening OpenVPN for Def Con
- 2016: Samy Kamkar's
- 2017: Jomo's Mastodon
- 2023: Lowend talk thread
Por que o roteamento da VPN vira superfície de ataque
- A VPN cria um túnel para o tráfego entre o dispositivo host e um servidor em outra rede, e o cliente VPN criptografa e descriptografa o tráfego na interface de rede virtual
- Uma configuração que envia todo o tráfego pela VPN é chamada de full-tunnel VPN; quando há exceções, como a rede local, isso é chamado de split-tunnel VPN
- Como a VPN precisa manter a conexão com o servidor, é necessária uma rota de exceção que envie pela interface física o tráfego destinado ao IP do servidor VPN
- A tabela de roteamento determina o caminho do tráfego conforme o destino e, na maioria das pilhas de rede, um CIDR prefix length mais específico tem prioridade maior
- Uma rota
/32tem prioridade sobre/24ou/0 - Muitas VPNs full-tunnel enviam o tráfego para a interface VPN usando
0.0.0.0/0ou duas rotas/1
- Uma rota
Injeção de rotas com a opção 121 do DHCP
- O DHCP fornece leases de endereços IP dinamicamente para dispositivos na rede local e também entrega configurações como gateway padrão e servidor DNS por meio de options
- O fluxo comum é o cliente transmitir
DHCPDISCOVERem broadcast e o servidor responder comDHCPOFFER, propondo um lease com tempo limitado - Introduzida na RFC 3442, a opção 121 do DHCP implementa classless static routes, permitindo que o servidor DHCP adicione rotas estáticas à tabela de roteamento do cliente
- A opção 121 não permite que o servidor DHCP indique diretamente qual interface de rede deve ser usada para instalar a rota
- O servidor DHCP especifica o intervalo CIDR e o roteador
- O cliente seleciona implicitamente como interface da rota aquela pela qual está se comunicando com o servidor DHCP
- Por causa desse comportamento, o tráfego das rotas injetadas pode sair pela interface física de rede que se comunica com o servidor DHCP, e não pela interface virtual da VPN
Condições do ataque e forma de execução
- O ataque TunnelVision exige duas condições
- O host alvo precisa aceitar um lease do servidor DHCP controlado pelo atacante
- O cliente DHCP do host alvo precisa implementar a opção 121 do DHCP
- Um atacante na mesma rede pode se tornar o servidor DHCP do alvo de várias formas
- Realizando um ataque de DHCP starvation contra o servidor DHCP legítimo e depois respondendo a novos clientes
- Respondendo primeiro ao broadcast
DHCPDISCOVERe explorando o comportamento de seleção da primeira oferta do cliente DHCP - Interceptando o tráfego entre o servidor DHCP legítimo e o cliente por ARP spoofing e esperando a renovação do lease
- O atacante executa um servidor DHCP na mesma rede do usuário da VPN e se define como gateway
- Depois, usa a opção 121 do DHCP para adicionar rotas arbitrárias à tabela de roteamento do usuário da VPN e insere rotas mais específicas que
/0da VPN, dando a elas prioridade sobre a interface virtual da VPN- Com várias rotas
/1, é possível reproduzir a regra de tráfego total0.0.0.0/0usada pela maioria das VPNs - O atacante pode escolher quais endereços IP vão pelo túnel VPN e quais vão pela interface que se comunica com o servidor DHCP malicioso
- Com várias rotas
- Também funciona em conexões VPN já estabelecidas; se o tempo de lease DHCP for curto, é possível forçar atualizações mais frequentes da tabela de roteamento
PoC e cenários de teste
- O material publicado inclui
- Video proof of concept: https://www.youtube.com/watch?v=ajsLmZia6UU
- Lab Setup Code: https://github.com/leviathansecurity/TunnelVision
- DHCP Server image: https://drive.google.com/file/d/1WLJGs3ZUypf6hLh5WL4AJmsKdUOZo5yZ
- O ambiente de testes foi montado para representar vários cenários de ataque
- Quando o atacante comprometeu um servidor DHCP ou ponto de acesso
- Quando um administrador malicioso possui e configura diretamente a infraestrutura
- Quando o atacante instala um AP sem fio evil twin em um local físico como café ou escritório
- No futuro, após a divulgação do ArcaneTrickster, também será possível simular um atacante em host vizinho na mesma LAN, mas sem posição privilegiada na rede
Sistemas operacionais e VPNs afetados
- Nos testes, foram afetados os sistemas operacionais que implementam um cliente DHCP conforme a RFC e suportam rotas da opção 121 do DHCP
- Impacto observado: Windows, Linux, iOS, macOS
- Exceção: Android não foi afetado porque não suporta a opção 121 do DHCP
- VPNs que dependem apenas de regras de roteamento para proteger o tráfego do host são vulneráveis
- Administradores que operam seu próprio servidor VPN também podem estar vulneráveis se não tiverem reforçado a configuração do cliente VPN
- A força dos algoritmos de criptografia não influencia esse problema
- TunnelVision não quebra os próprios protocolos de VPN, como WireGuard, OpenVPN ou IPsec
- Em vez disso, altera a configuração de roteamento da pilha de rede do sistema operacional para fazer o usuário deixar de usar o túnel VPN
Correções e mitigações
- Os namespaces de rede do Linux podem corrigir completamente esse comportamento
- A documentação do WireGuard mostra como tratar o tráfego de aplicações que precisam usar a VPN em um namespace separado e depois enviá-lo para outro namespace com a interface física
- Não está claro se existe uma solução igualmente robusta em Windows, macOS e outros sistemas operacionais
- Alguns provedores de VPN usam uma mitigação baseada em firewall que bloqueia todo o tráfego de entrada e saída na interface física
- São necessárias exceções para DHCP e para o IP do servidor VPN, a fim de manter a LAN e a conexão com o servidor VPN
- Também é possível permitir apenas DHCP e protocolos de VPN com inspeção profunda de pacotes, mas isso pode trazer penalidade de desempenho
- Mitigações via firewall podem criar negação seletiva de serviço no tráfego que usa rotas DHCP e adicionar canais laterais
- O atacante pode analisar mudanças no volume de tráfego criptografado da VPN para comprovar estatisticamente se o usuário alvo está enviando tráfego para determinados destinos
- Ele pode comparar com uma lista predefinida, realizar bloqueio seletivo como mecanismo de censura ou usar bloqueio de espaço de IP como uma busca binária para encontrar a conexão atual em tempo logarítmico
- Também é possível ignorar a opção 121 durante o uso da VPN, mas esse recurso pode ser necessário para conexões legítimas de rede e causar falhas de conectividade
- Se essa mitigação for opcional, o atacante pode negar acesso à rede para induzir a VPN ou o usuário a reativar a opção 121
- Hotspots e VMs também podem ajudar na mitigação
- Uma LAN protegida por senha e controlada por um dispositivo celular ajuda a impedir o acesso do atacante à rede local
- Uma VM se comporta de forma semelhante, desde que o adaptador de rede não esteja em modo bridged
Medidas necessárias para usuários e operadores
- Para tráfego sensível, deve-se evitar redes não confiáveis e, quando isso não for possível, usar um provedor de VPN com mitigação eficaz contra TunnelVision
- Mesmo que ocorra um decloak de VPN, ao acessar sites HTTPS a maior parte dos dados do usuário não ficará visível para o atacante na rede local, mas destino e protocolo ainda podem ser expostos
- Se uma VPN corporativa for usada em cafés, hotéis, aeroportos etc., os administradores de rede devem alertar sobre o risco e orientar a evitar esse uso sempre que possível
- Se isso não for prático, devem orientar o uso de uma VPN com mitigação ou correção aplicada
- Também é possível usar um hotspot confiável antes de se conectar à VPN ou executar a VPN dentro de uma VM que receba lease de um servidor DHCP virtual
- Empresas que operam sua própria rede ou VPN site-to-site devem verificar os switches e ativar proteções de Layer 2 como DHCP snooping e proteção contra ARP
- Essas proteções ajudam a reduzir servidores DHCP rogue, mas não eliminam o cenário de administrador malicioso
- Aplicar HTTPS ou outros protocolos criptografados aos recursos internos ajuda a evitar vazamento de dados de usuários de VPN que acessam a partir de redes não confiáveis
- Provedores de VPN podem adicionar ao cliente uma função de firewall para bloquear pacotes de saída pela interface de rede, mas isso impede o usuário de interagir com recursos da rede local
- Clientes VPN full-tunnel para Linux devem considerar isolamento com namespaces de rede
- Mantenedores de sistemas operacionais devem avaliar adicionar ou fortalecer recursos relacionados a namespaces de rede em sistemas além do Linux
- Está em desenvolvimento uma biblioteca de infraestrutura adversarial chamada ArcaneTrickster para pesquisa de segurança em LAN e demonstração prática de ataques, com divulgação planejada para o futuro
1 comentários
Comentários do Hacker News
Isso é uma pequena variação do ataque PoisonTap do Samy Kamkar, de 2016. Faz a mesma coisa com um adaptador de rede USB/Thunderbolt: basta conectá-lo ao dispositivo da vítima e anunciar duas rotas mais específicas, como 0.0.0.0/1 e 128.0.0.0/1, para capturar todo o tráfego com prioridade sobre outras interfaces do sistema, independentemente da ordem das interfaces: https://github.com/samyk/poisontap
Provavelmente há outros precedentes, mas este é um caso bem conhecido. O título do artigo diz que todos os clientes VPN são afetados, mas, como o próprio texto admite, muitos clientes VPN configuram regras de firewall para bloquear tráfego que passa por interfaces físicas
VPNs que prometem anonimato, ou nas quais esse anonimato é importante, geralmente implementam isso. Muitas talvez não deixem isso ativado por padrão, mas teria sido mais produtivo documentar qual porcentagem das principais soluções de VPN pessoais/comerciais/empresariais deixa isso ativado por padrão
A explicação para leitores em geral é boa, mas, considerando que muitos clientes evitam a maior parte dos vazamentos de dados com essas regras de firewall e que o texto não reconhece os precedentes nessa área, o título parece um pouco exagerado
A expressão “ataque de canal lateral” quase me fez cuspir a bebida
Edit: pelo que vi, o NordVPN, pelo menos no macOS, aparentemente não tem essas regras básicas de firewall e parece ser vulnerável a este ataque
Não entendo por que esse artigo é tão longo
A DHCP Option 121 permite que um servidor DHCP configure regras de roteamento para intervalos CIDR específicos, e, por ter um prefixo mais longo, ganha prioridade sobre a regra padrão 0.0.0.0/0
Metade das informações sobre VPN na internet é escrita pelos próprios provedores de VPN, e costuma ser imprecisa ou não suficientemente técnica para explicar como isso realmente funciona
Eu queria colocar no início uma frase com link dizendo “se você já sabe disso, pule para a seção de POC”, mas vou atualizar para ficar mais visível
É um palpite baseado apenas no comentário acima, sem ter lido o artigo
Achei que já tinha lido sobre esse ataque antes, de outro autor, então fui procurar e, depois de abrir caminho por uma enxurrada de spam de empresas de VPN nos resultados, encontrei o trabalho anterior [1]
Este artigo entra mais a fundo em como explorar a falha e também traz código útil para uma prova de conceito
1: https://www.usenix.org/conference/usenixsecurity23/presentat...
Mas nenhuma das duas técnicas do artigo de agosto de 2023 usava DHCP option 121 para empurrar rotas. Empurrar rotas via DHCP aumenta muito o impacto a partir da mesma posição do atacante. Por exemplo, estando em uma posição em que se pode distribuir leases de IP fora do intervalo RFC1918 ou falsificar respostas DNS
O modelo de ameaça é que um atacante arbitrário consiga, de algum modo, virar um servidor DHCP na minha LAN; é improvável, mas não impossível
Por outro lado, se você usa o gateway fornecido pelo ISP, a conversa muda
Esse é o principal argumento de venda de muitos produtos de VPN
Nesse caso, a resposta correta é usar conexão 4G/5G e não se conectar a redes suspeitas em que você não confia
Em casas comuns, o DHCP vem do roteador e por isso normalmente responde primeiro, mas isso é secundário. Qualquer dispositivo malicioso dentro da rede pode explorar essa vulnerabilidade
No Linux, também dá para mitigar isso colocando a interface da VPN em uma VRF. Por exemplo, o systemd-networkd oferece suporte nativo a isso
O ponto de atenção é que, ao ativar a VRF, a entrada
ip rulepara l3mdev fica em 1000, mas a regra de tráfego local fica em 0. É preciso mover a regra local para 1000 ou maisEsse “ataque” é apenas um uso esperto da DHCP option 121. É um ataque válido contra configurações de cliente seriamente mal projetadas
Alterar a rota padrão ou sobrescrevê-la com duas rotas /1 e adicionar uma rota de host para o endpoint da VPN não é seguro. Para isolar corretamente o tráfego encapsulado da rede subjacente, é preciso usar roteamento baseado em políticas. Por exemplo: namespaces de rede no Linux, vnet no FreeBSD, rdomains no OpenBSD
Essa tentativa de amarrar filtros de pacotes e “kill switches” em espaço de usuário é quebrada desde a concepção e mostra o quanto os provedores comuns de hospedagem de VPN entendem pouco — ou simplesmente não se importam — com aquilo que dizem ser sua competência principal. É mais um caso do velho problema de “listar coisas ruins”
Não é exatamente novidade
Eu me preocuparia mais com pessoas cujo sistema tem IPv6 ativado, mas que usam um serviço de VPN só para IPv4
Isso sim pode dar muito errado
Há muitas formas de contornar uma VPN no dispositivo cliente. Por isso, quando a VPN é necessária, prefiro colocar entre o cliente e a internet um roteador que encerre o túnel VPN e não tenha outro caminho possível
Esses roteadores de viagem podem ser configurados com muita facilidade para serem levados a qualquer lugar, e é exatamente isso que faço
Por exemplo, há um roteador Wi‑Fi “work” que mantém sempre uma conexão VPN com a intranet do trabalho, um Wi‑Fi “Australia” que se conecta a um servidor na Austrália sempre que eu quero assistir TV australiana, e por fim o Wi‑Fi normal da internet residencial
Dá para fazer isso com muita facilidade usando alguns roteadores Wi‑Fi antigos, e parece que hoje em dia até roteadores domésticos baratos têm algum nível de suporte a VPN. Além de centralizar a configuração da VPN e reduzir espaço para erros, há a grande vantagem de que qualquer dispositivo pode usar a VPN só de se conectar àquele Wi‑Fi
Eu uso vários roteadores antigos dessa forma, mas na verdade parece que poderia existir um mercado para um único roteador doméstico que fechasse VPNs para vários lugares do mundo e oferecesse redes Wi‑Fi diferentes por localização. A ideia seria fazer com que TV/Roku/iPad parecessem acessar facilmente a partir de outras regiões
Ainda assim, se houver um dispositivo não confiável na LAN e você usar DHCP, esse dispositivo poderá bisbilhotar tráfego não criptografado* com essa técnica. Mesmo assim, não conseguirá descobrir o IP real, porque o gateway o oculta
O cenário mais realista para esse ataque é algo como o Wi‑Fi de um café. Nesses lugares, é pouco provável que a pessoa leve o próprio roteador
Aqui, “tráfego não criptografado” significa tráfego que não foi encapsulado para ser enviado ao provedor de VPN. Hoje em dia, como a maior parte das conexões usa HTTPS, o conteúdo desse tráfego em si ainda deve continuar criptografado
Para quem é técnico, isso deveria ser bem óbvio, mas é uma boa introdução a redes e VPN. Já montei algumas vezes uma VM gateway de VPN em Linux, e uma arquitetura que depende apenas da tabela de roteamento sempre me pareceu frágil, especialmente quando roda na mesma máquina que usa essa conexão
Além de namespaces de rede e roteadores físicos de gateway VPN, uma arquitetura baseada em VMs também pode resolver esse problema. No meu homelab, o firewall bloqueia tráfego inesperado saindo da VM gateway de VPN. Os dispositivos da VLAN da VPN não podem se conectar diretamente para fora, e a VM gateway tem uma VLAN separada para conectividade externa
Como solução pessoal, o QubesOS permite configurar algo parecido com relativamente pouco atrito, mas ainda exige mais conhecimento técnico do que um sistema operacional comum
Achei interessante a parte de que “o Android foi o único não afetado porque não implementou suporte à opção 121 do DHCP”
Fico curioso se isso foi uma decisão deliberada do Google por conhecer esse problema, ou se foi completamente acidental
Meu palpite é que a equipe de redes do Android é muito favorável ao IPv6. Parece não ter muito interesse em recursos de nicho ausentes no IPv4. Mesmo no IPv6, existe uma visão específica de como ele deve ser usado, o que acaba resultando na falta intencional de suporte a coisas como DHCPv6 com estado
Como essa opção de DHCP não é comumente usada, com uma estratégia dessas ela provavelmente teria ficado sem suporte mesmo sem qualquer preocupação de segurança
Então não é tão surpreendente assim