Serv-U Remote Memory Escape Vulnerability
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha de memória (out-of-bounds write, CWE-787) na implementação do protocolo SSH do SolarWinds Serv-U que permite execução remota de código sem autenticação, caso o serviço SSH do Serv-U esteja exposto à internet. Foi usada como 0-day por um grupo atribuído pela Microsoft à China (DEV-0322) contra um conjunto limitado e direcionado de vítimas antes da correção, e está no catálogo KEV da CISA por exploração confirmada.
Detalhamento técnico
A falha está no parsing de pacotes SSH pelo Serv-U, especificamente na rotina CSUSSHSocket::ProcessReceive, responsável por processar payloads recebidos na negociação/tratamento de mensagens SSH. O bug é uma escrita fora dos limites de memória (CWE-787) — o atacante controla parte do conteúdo de um pacote SSH malformado que, ao ser processado, corrompe memória do processo Serv-U.exe, permitindo desviar o fluxo de execução e rodar código arbitrário com os privilégios do processo (tipicamente SYSTEM ou conta de serviço configurada).
A Microsoft identificou a causa raiz via análise black-box do binário (não teve acesso ao código-fonte), depois de observar telemetria com processos anômalos gerados a partir do Serv-U.exe. O fornecedor não publicou detalhes técnicos adicionais do bug após o patch, alegando dar tempo para clientes atualizarem.
Um detalhe relevante da superfície de exploração: a pasta \Client\Common\ do Serv-U é acessível pela internet por padrão, e o grupo observado redirecionava a saída de comandos executados via cmd.exe para arquivos dentro dessa pasta, usando-a como canal de exfiltração dos resultados do comando remoto — sem depender de shell reverso.
No Windows, a exploração leva a RCE completo. No Linux, o SolarWinds afirma que a mesma tentativa de exploração causa apenas crash do processo Serv-U (negação de serviço), não execução de código — distinção confirmada pelo próprio fornecedor, não apenas suposição da pesquisa.
Como é explorada
Pré-requisito central, frequentemente omitido em resumos da CVE: o serviço SSH do Serv-U precisa estar exposto à rede/internet. Não há necessidade de autenticação (PR:N, UI:N no vetor CVSS), mas a complexidade de ataque é alta (AC:H) — a exploração exige conhecimento preciso da falha de memória e engenharia cuidadosa do payload SSH, não é um ataque trivial de scan-and-pwn.
Na campanha documentada pela Microsoft, o grupo DEV-0322 explorou o 0-day para obter execução de código no processo Serv-U e em seguida gerou processos filhos (mshta.exe, cmd.exe, powershell.exe) para reconhecimento (whoami, dir), execução de scripts batch e movimentação lateral via cópia de arquivos por SMB. Um passo de persistência observado foi a criação manual de um arquivo .Archive malformado no diretório Global Users, efetivamente adicionando um usuário administrador ao próprio Serv-U — abuso do formato de armazenamento de credenciais do produto, não uma segunda vulnerabilidade.
A exploração bem-sucedida também tende a gerar efeitos colaterais visíveis: uma exceção registrada no log e, em alguns casos, o crash do processo Serv-U após execução de comando malicioso — sinal de que o exploit, como escrito pelos atacantes observados, não era perfeitamente estável.
Versões
Como se proteger
Atualizar para Serv-U 15.2.3 HF2 é a correção definitiva. Caminhos de atualização conforme o SolarWinds: quem está em 15.2.3 HF1 aplica direto o HF2; quem está em 15.2.3 sem hotfix aplica HF1 e depois HF2; quem está em qualquer versão anterior a 15.2.3 precisa primeiro atualizar para 15.2.3, depois HF1, depois HF2 — não existe atalho direto de versões antigas para o HF2.
Se a atualização imediata não for possível, o controle compensatório real é não expor a porta SSH do Serv-U à internet (restringir por firewall/VPN/allowlist de IP) — a Microsoft afirma explicitamente que o risco de RCE depende do SSH estar acessível externamente. Isso não elimina a vulnerabilidade, apenas reduz drasticamente a superfície de ataque enquanto o patch não é aplicado. Em ambientes Windows sem patch e com SSH exposto, revisar se a pasta \Client\Common\ está com permissões/exposição além do necessário também reduz a utilidade de um dos vetores de exfiltração observados na campanha real.
Não existe mitigação eficaz apenas via desativação de recursos não relacionados ao SSH (FTP/FTPS por si só não protege, já que o vetor documentado é especificamente a implementação SSH). Em Linux, o próprio fornecedor descreve o impacto como crash (DoS), não RCE — ainda assim recomenda-se aplicar o patch, pois a garantia de que não há caminho de RCE ali vem apenas da avaliação do fornecedor, sem confirmação independente publicada.
Como detectar
O Serv-U registra no arquivo de log DebugSocketLog.txt uma exceção do tipo 'EXCEPTION: C0000005; CSUSSHSocket::ProcessReceive(); Type: 30...' quando uma tentativa de exploração ocorre. A própria Microsoft alerta que essa exceção pode aparecer por motivos não relacionados a ataque, então não é um indicador definitivo isolado — deve ser correlacionado com outros sinais.
Outros indicadores comportamentais da campanha real observada: processos filhos anômalos gerados a partir de Serv-U.exe (mshta.exe, cmd.exe, powershell.exe executando reconhecimento como whoami/dir), saída de comandos redirecionada para arquivos dentro de \Client\Common\, e a criação/modificação inesperada de arquivos .Archive no diretório Global Users (indicando criação de usuário administrador não autorizado). A ausência desses sinais não garante que não houve tentativa, especialmente diante de exploits mais estáveis que os observados na campanha documentada.