CVE-2017-0145
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha de execução remota de código no servidor SMBv1 do Windows, explorável sem autenticação via pacotes manipulados na porta 445. É a vulnerabilidade que, junto com CVE-2017-0143, 0144, 0146 e 0148 (todas cobertas pelo boletim MS17-010), forma a base do exploit EternalBlue, usado nos ataques WannaCry e NotPetya em 2017 — por isso está no catálogo KEV da CISA com exploração ativa confirmada, apesar de já ter sete anos.
Detalhamento técnico
A falha reside na implementação do protocolo SMBv1 (Server Message Block versão 1) no driver srv.sys / srv2.sys do Windows, que processa requisições de transação SMB. O problema é classificado como validação de entrada inadequada (CWE-20): o servidor SMB não verifica corretamente o tamanho ou o conteúdo de campos em pacotes de transação criados sob medida, permitindo que um atacante corrompa memória do kernel e obtenha execução de código com privilégios de sistema.
A NVD trata CVE-2017-0145 como uma falha distinta de CVE-2017-0143, 0144, 0146 e 0148, mas na prática todas fazem parte do mesmo boletim MS17-010 e do mesmo conjunto de bugs no manuseio de transações SMBv1 (SrvOs2FeaToNt, SrvOs2FeaListToNt e funções relacionadas de conversão de FEA/FEA_LIST) que a NSA reuniu no exploit EternalBlue, vazado pelo grupo Shadow Brokers em abril de 2017. O atacante controla o conteúdo e o tamanho de campos dentro do pacote de transação SMB, o que é suficiente para desencadear a corrupção.
Depois da execução de código via EternalBlue, o vetor de ataque histórico instala o EternalBlue's payload companion conhecido como DoublePulsar, um implante que roda em modo kernel e serve como backdoor para carregar DLLs arbitrárias na memória — mecanismo documentado nas análises de resposta a incidentes referenciadas (Packet Storm) sobre neutralização e detecção do DoublePulsar.
Como é explorada
O vetor é de rede, sem necessidade de autenticação nem interação do usuário: basta acesso TCP à porta 445 (SMB) — em algumas configurações também 139 — de um host com SMBv1 habilitado e sem o patch MS17-010. Não há pré-condição de configuração não padrão relevante: SMBv1 vinha habilitado por padrão em todas as versões de Windows listadas antes de 2017, o que tornou o problema crítico em redes internas e, por um período, em hosts expostos diretamente à internet.
Na exploração real (WannaCry, maio de 2017, e NotPetya, junho de 2017), o EternalBlue foi usado tanto como vetor de entrada inicial em hosts expostos quanto, mais frequentemente, como mecanismo de movimento lateral dentro de redes já comprometidas, self-propagando via varredura de blocos de rede na porta 445. Após a corrupção de memória, o exploit tipicamente instalava o DoublePulsar para então carregar o payload final (ransomware, worm, etc.).
Há módulo Metasploit (auxiliary/scanner/smb/smb_ms_17_010, referenciado no Exploit-DB) que detecta se o host está vulnerável através de disclosure de informação (retorno STATUS_INSUFF_SERVER_RESOURCES em uma transação PeekNamedPipe contra IPC$, sem precisar de credenciais válidas), além de PoCs públicas de exploração completa. A complexidade técnica de construir o exploit é alta (requer conhecimento de heap grooming em kernel), mas como já existem ferramentas prontas e amplamente distribuídas desde 2017, a barreira de exploração prática é baixa.
Versões
Como se proteger
A correção oficial é o patch distribuído pela Microsoft no boletim MS17-010, publicado em 14 de março de 2017, cobrindo todas as versões listadas (Vista SP2; Server 2008 SP2 e R2 SP1; 7 SP1; 8.1; Server 2012 Gold e R2; RT 8.1; 10 Gold/1511/1607; Server 2016). Sistemas fora de suporte na época (Windows XP, Server 2003) receberam patch extraordinário fora do ciclo normal dado o risco de propagação self-replicante do worm. A entrada no catálogo KEV da CISA (adicionada em 2022, com prazo de correção 2022-08-10) reforça que ambientes ainda sem esse patch, sete anos depois, devem tratá-lo como prioridade máxima.
Se a atualização não puder ser aplicada imediatamente, o paliativo real é desabilitar o protocolo SMBv1 por completo (via configuração de recursos do Windows / Set-SmbServerConfiguration -EnableSMB1Protocol $false), já que SMBv2/v3 não são afetados por esta falha. Bloquear as portas 445 e 139 na borda da rede e entre segmentos internos reduz a superfície de ataque para movimento lateral, mas não corrige hosts vulneráveis expostos a segmentos onde o tráfego SMB é necessário.
O que não funciona como mitigação suficiente: apenas bloquear a porta 445 no firewall de perímetro não protege contra propagação lateral dentro da rede interna, que foi o vetor dominante no NotPetya. Antivírus e detecção de assinatura também não substituem o patch, pois variantes do exploit e do implante DoublePulsar evoluíram para evadir assinaturas estáticas.
Como detectar
Não existe assinatura confiável e definitiva no tráfego para distinguir com certeza uma tentativa de exploração de CVE-2017-0145 isoladamente, já que ela é explorada em conjunto com as demais falhas do MS17-010 dentro do mesmo pacote de transação SMB — o sinal mais prático é a presença de tráfego SMBv1 anômalo na porta 445/139, especialmente transações malformadas ou picos de conexões oriundas de hosts internos (comportamento típico de propagação tipo worm). Ferramentas de varredura como o módulo Metasploit smb_ms_17_010 identificam hosts vulneráveis via disclosure de erro (STATUS_INSUFF_SERVER_RESOURCES) em uma transação PeekNamedPipe contra o compartilhamento IPC$, sem exigir credenciais — o mesmo padrão de tráfego pode ser usado defensivamente para auditoria de exposição.
Após exploração bem-sucedida, o indicador mais forte é a presença do implante DoublePulsar em memória kernel, cuja detecção e neutralização foram documentadas publicamente (ver referências Packet Storm sobre DoublePulsar Payload Execution e Neutralization); scanners específicos para DoublePulsar (checagem de resposta a comandos multiplexados na porta 445) são mais confiáveis do que assinaturas de rede genéricas para SMBv1.