Exploit público dá acesso root em máquinas Linux com AnyDesk 8.0.2
Pesquisadores publicaram um exploit funcional para o AnyDesk no Linux que executa comandos como root na máquina-alvo, sem senha e antes de qualquer pessoa aceitar a conexão. O exploit, chamado AnyPwn, ataca o AnyDesk 8.0.2 em execução como serviço e o alcança pela porta TCP 7070. A AnyDesk corrigiu a falha em junho, na versão 8.0.3, mas o changelog a descrevia apenas como "fixed a bug that could lead to a crash" ("corrigido um bug que podia causar uma falha"), sem CVE e sem aviso de segurança, de modo que muitos administradores não tinham motivo para tratar a atualização como urgente.
O que o exploit faz
O bug foi encontrado por Rick de Jager, da empresa de segurança V12, que publicou a prova de conceito no GitHub em 8 de outubro. Trata-se de um estouro de heap no código que lida com os primeiros pacotes de uma sessão: o AnyDesk confia em um campo de tamanho enviado pelo lado remoto antes de verificá-lo, o número estoura e o programa copia dados do atacante para além de um buffer minúsculo. No Linux, o serviço do AnyDesk normalmente roda como root, e por isso o código executado dessa forma ganha controle total da máquina. Não é preciso nenhum clique nem aprovação da pessoa diante da tela.
O exploit público tem limites. Foi construído para uma build específica da 8.0.2 em Linux de 64 bits, exige conexão direta à porta 7070 e não funciona sempre: quando o layout da memória não bate, o que trava é o serviço do AnyDesk. Os pesquisadores dizem que a 8.0.1 pode ter a mesma falha, mas não portaram o exploit para ela. A AnyDesk afirma que o problema está "limited to direct connections on Linux (connections that do not go through our relays)" ("limitado a conexões diretas no Linux, ou seja, conexões que não passam por nossos relays") e que não afeta Windows nem macOS. A V12, porém, diz ter confirmado que o código vulnerável também pode ser alcançado pelos servidores de relay do AnyDesk. Ela não construiu um exploit completo para esse caminho, então continua em aberto se as conexões via relay são exploráveis.
Por que o patch passou despercebido
As equipes de segurança costumam decidir o que corrigir primeiro com base nos números CVE e nos avisos dos fabricantes. Até 9 de outubro, essa falha não tinha nenhum dos dois, então scanners e painéis de patches que dependem de feeds de CVE não tinham o que sinalizar. Uma máquina Linux cujo AnyDesk foi atualizado pela última vez antes de junho continua rodando uma versão para a qual agora existe um exploit público. Segundo a V12, o fabricante retirou a build 8.0.2 de seu site depois que os pesquisadores divulgaram um vídeo do ataque.
Verifique suas máquinas
- Descubra a versão: execute
anydesk --version. Qualquer versão abaixo da 8.0.3 precisa ser atualizada. A versão atual é a 8.1.0. - Veja se o serviço está escutando:
sudo ss -ltnp | grep 7070. Uma linha comanydeskindica que a porta está aberta naquela máquina. - Atualize pelo gerenciador de pacotes ou pelo repositório do AnyDesk e depois reinicie o serviço com
sudo systemctl restart anydesk. - Feche a porta 7070 para a internet no firewall do host, no roteador e em qualquer grupo de segurança na nuvem. A correção é atualizar. Fechar a porta é uma segunda barreira enquanto a questão das conexões via relay continuar em aberto.
- Procure sinais de alerta: falhas repetidas do serviço do AnyDesk, conexões inesperadas à porta 7070 e processos iniciados pelo serviço do AnyDesk que ninguém executou.
Um serviço de área de trabalho remota que escuta na internet aberta é um risco mesmo totalmente atualizado. Mantê-lo acessível apenas por uma VPN ou outra rede privada até a rede do escritório ou da casa significa que uma falha como esta não pode ser atingida pela internet, apenas por quem já tem acesso a essa rede. O mesmo valia para a falha de SSH nos roteadores MikroTik. Nosso guia de configuração do WireGuard mostra como montar esse túnel no seu próprio servidor.