CVE-2018-7445
Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.
Apply updates per vendor instructions.
Resumo
Overflow de pilha no serviço SMB do MikroTik RouterOS, disparado ao processar mensagens de session request do NetBIOS, antes de qualquer autenticação. Qualquer atacante com acesso de rede à porta SMB (139/TCP) do dispositivo pode executar código arbitrário no sistema, sem credenciais. Está no catálogo KEV da CISA com exploração confirmada e PoC pública funcional, o que a torna crítica em qualquer ambiente que exponha SMB do RouterOS à rede.
Detalhamento técnico
A falha (CWE-121, stack-based buffer overflow; a CISA classifica como CWE-119) está na função que faz o parsing de nomes NetBIOS dentro do binário SMB do RouterOS — no exemplo da Core Security, localizada em 0x08054607 no binário x86 da versão 6.40.5. A função recebe dois buffers alocados na pilha: origem e destino. Ela lê o primeiro byte do buffer de origem e usa esse valor como tamanho de uma cópia byte a byte para o destino; ao final do bloco, lê o próximo byte como novo tamanho e repete o loop até encontrar um tamanho zero, concatenando os nomes com um separador.
O problema é a ausência total de validação de que a soma dos tamanhos copiados cabe no buffer de destino, que também está na pilha. Como o atacante controla integralmente o conteúdo da mensagem NetBIOS session request — incluindo os bytes de tamanho e os dados que serão copiados — ele controla o tamanho e o conteúdo do overflow, sobrescrevendo variáveis locais, ponteiros salvos e o endereço de retorno da função.
O overflow ocorre na fase de estabelecimento de sessão NetBIOS, uma etapa que precede qualquer troca de credenciais SMB. Não há checagem de autenticação antes que o parsing vulnerável seja executado, então o vetor é acessível a qualquer cliente que consiga abrir uma conexão TCP na porta do serviço.
Como é explorada
O vetor é uma conexão TCP direta à porta 139 (SMB/NetBIOS) do RouterOS. Não é necessária autenticação, conta de usuário, nem configuração não padrão — basta o serviço SMB estar habilitado e acessível pela rede (interna, WAN ou internet, dependendo de como o dispositivo está exposto). A exploração publicada pela Core Security demonstra o processo completo em dois passos: primeiro uma conexão é usada para armazenar um payload grande no heap, que funciona como NOP sled e contém o shellcode; a conexão original é fechada pelo servidor após esse envio, exigindo abertura de uma segunda conexão para enviar a mensagem NetBIOS session request que efetivamente dispara o overflow e desvia a execução para o payload no heap.
No caso testado (Cloud Hosted Router em x86), os pesquisadores tiveram que contornar DEP via uma cadeia ROP que chama mprotect() para tornar a região do heap executável, e observaram que, embora pilha e bibliotecas tivessem ASLR, o endereço base do heap não era randomizado — o que tornou a técnica de armazenar o payload no heap e saltar para um endereço fixo extremamente confiável nos testes deles. A exploração em outras arquiteturas/dispositivos MikroTik exige adaptação de offsets e gadgets ROP específicos ao binário SMB daquela plataforma, mas o mecanismo de fundo — controle total do conteúdo copiado via o parser de nomes NetBIOS — é o mesmo.
O resultado final documentado é execução de código arbitrário reutilizando o próprio socket da conexão para spawnar um shell (execve de /bin/sh), dando ao atacante acesso interativo ao roteador. A presença no catálogo KEV da CISA confirma exploração ativa em ambientes reais, e existe exploit público (Exploit-DB #44290) replicando a PoC da Core Security.
Versões
Como se proteger
A correção do fornecedor está nas versões RouterOS 6.41.3 e 6.42rc27 e posteriores — atualizar é a mitigação definitiva. Não há detalhamento na fonte sobre correção retroativa em outros branches além desses dois.
Se a atualização não for imediatamente viável, o próprio MikroTik recomenda desabilitar o serviço SMB no dispositivo como paliativo. O custo é a perda de qualquer funcionalidade de compartilhamento de arquivos via SMB que dependa desse serviço no RouterOS — geralmente aceitável, já que SMB em equipamento de borda/roteador raramente é uma função crítica de negócio.
Como mitigação compensatória adicional, restringir o acesso à porta 139/TCP por firewall (bloqueio de origem WAN, ACLs) reduz a superfície de exposição, mas não elimina o risco de um atacante já dentro da rede local. Não existe mitigação via 'apenas usar autenticação' — o overflow ocorre antes da fase de autenticação, então esse controle não se aplica aqui.
Como detectar
Tentativas de exploração deixam como sinal de rede conexões na porta 139/TCP com mensagens NetBIOS session request contendo payloads anormalmente grandes (o PoC público envia blocos repetidos da ordem de milhares de bytes seguidos de shellcode) e um padrão de duas conexões sequenciais — a primeira usada para posicionar dados no heap e fechada pelo servidor, a segunda para disparar o overflow. Monitoramento de tráfego SMB voltado a dispositivos MikroTik pode buscar mensagens de sessão fora do tamanho e formato esperados para nomes NetBIOS legítimos, e crashes ou reinícios inesperados do serviço SMB no RouterOS são indício de tentativa (bem ou mal sucedida) de exploração.