CVE-2018-14847
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha de directory traversal (CWE-22) no serviço WinBox do MikroTik RouterOS que permite a um atacante remoto não autenticado ler qualquer arquivo do sistema de arquivos do roteador — incluindo a base de usuários com credenciais administrativas. Um atacante que já possua credenciais válidas (via essa mesma leitura ou outro meio) pode escrever arquivos arbitrários, o que foi demonstrado permitir escalonamento a shell root via um usuário de desenvolvimento oculto. É explorada ativamente há anos, está no catálogo KEV da CISA e tem módulo Metasploit e múltiplos PoCs públicos — o risco é real e não teórico.
Detalhamento técnico
O componente vulnerável é o binário mproxy, que implementa o protocolo proprietário do WinBox (porta TCP 8291, e também via Layer 2/MAC-Server para dispositivos sem IP configurado). O protocolo trabalha com um mecanismo de sessão/índice que referencia arquivos no sistema de arquivos do RouterOS para transferir componentes da interface. Esse mecanismo não canonicaliza nem valida adequadamente o caminho solicitado pelo cliente, permitindo que sequências de travessia de diretório levem o processo a abrir e devolver arquivos fora da área esperada — um directory traversal clássico (CWE-22).
Como o WinBox aceita conexões antes de qualquer autenticação para negociar a sessão, a leitura arbitrária de arquivos não exige credencial alguma. Isso permite recuperar a base de usuários do dispositivo, expondo login e senha do administrador (em versões afetadas, o esquema de armazenamento permitia recuperação da senha em texto claro pelo atacante, como demonstram os PoCs públicos que implementam a extração diretamente).
A escrita arbitrária de arquivos, por sua vez, exige que o atacante já possua credenciais válidas — não é uma primitiva pré-autenticação. O pesquisador da Tenable (PoC "By the Way") mostrou que, usando credenciais de admin obtidas (inclusive pela própria falha de leitura), é possível escrever um pacote falso em /pckg/option e um arquivo de configuração para habilitar um usuário de desenvolvimento interno ("devel") na build do RouterOS, cujo shell é acessível via Telnet/SSH usando a senha do admin. Isso converte a falha de leitura de credenciais em um caminho completo para shell root no dispositivo.
A CVE descrita pelo NVD cobre apenas até a versão 6.42, mas os PoCs da comunidade mapeiam faixas mais amplas e específicas por branch (Longterm, Stable, Beta), que divergem ligeiramente da descrição oficial — ver seção de versões.
Como é explorada
O vetor primário é rede: qualquer atacante com acesso TCP à porta 8291 (WinBox) do dispositivo consegue, sem autenticação, disparar a leitura de arquivos arbitrários e extrair a base de usuários, obtendo login e senha de administração. Não há necessidade de configuração não padrão — o serviço WinBox habilitado é o único pré-requisito, e em muitos ambientes ele fica exposto à internet por conveniência de gerência remota. Existe também um vetor de Camada 2 (MAC-Server) que funciona mesmo em dispositivos sem IP configurado, bastando estar na mesma rede local.
A escrita arbitrária de arquivos — usada para plantar o backdoor de desenvolvedor e obter shell root — depende de credenciais administrativas válidas, que na prática o próprio atacante acaba de obter explorando a fase de leitura não autenticada. Ou seja, na cadeia completa de ataque a exploração é efetivamente não autenticada de ponta a ponta: lê a senha, depois usa a senha para escrever e escalar.
A exploração é trivial de automatizar (existem PoCs em Python e C++ funcionais publicamente, e módulo Metasploit) e é amplamente usada por botnets e campanhas de comprometimento de roteadores MikroTik desde 2018. A presença no catálogo KEV da CISA confirma exploração ativa continuada no mundo real, não apenas prova de conceito acadêmica.
Versões
Como se proteger
A mitigação definitiva é atualizar o RouterOS para uma versão corrigida — o MikroTik lançou correção em abril de 2018. Consulte o advisory oficial do fornecedor (blog.mikrotik.com/security/winbox-vulnerability.html e mikrotik.com/supportsec/winbox-vulnerability) para a versão exata recomendada para o seu branch (Longterm, Stable ou Beta), já que as versões afetadas variam por branch e a descrição do NVD ("through 6.42") simplifica isso.
Se a atualização imediata não for viável, os paliativos reais são: desabilitar o serviço WinBox se não for usado (/ip service disable winbox); restringir o serviço a endereços IP de gerência confiáveis (/ip service set winbox address=); bloquear a porta 8291 no firewall de borda para tráfego originado da WAN; e restringir o MAC-Server WinBox a interfaces específicas (/tool mac-server mac-winbox), já que o vetor de Camada 2 contorna bloqueios de IP.
Não funciona como mitigação apenas trocar a senha do administrador sem corrigir ou isolar o serviço — como o ataque começa justamente pela leitura não autenticada da credencial, uma senha nova continua exposta pelo mesmo caminho. Expor WinBox diretamente à internet, mesmo com senha forte, permanece de alto risco em versões vulneráveis.
Como detectar
No lado do dispositivo, buscar por acessos anômalos ao serviço WinBox (porta TCP 8291) originados de IPs externos ou não pertencentes à faixa de gerência esperada — especialmente conexões seguidas por autenticações bem-sucedidas com credenciais que não deveriam estar em uso remoto. A criação inesperada de pacotes em /pckg (como um pacote chamado "option") ou arquivos em /flash/nova/etc/devel-login, e logins subsequentes via Telnet/SSH usando o usuário "devel", são indicadores fortes de exploração da cadeia completa de leitura+escrita.
Não há um padrão de log HTTP ou assinatura simples de payload, porque o protocolo WinBox é binário e proprietário — ferramentas de IDS/IPS com decodificação específica do protocolo M2/WinBox são necessárias para detectar as requisições de travessia de diretório com confiabilidade; sem isso, a ausência de sinal não significa ausência de exploração.