CVE-2020-25223
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha de injeção de comando de SO (CWE-78) no WebAdmin do Sophos SG UTM que permite execução remota de código como root, sem autenticação. O vetor é uma requisição HTTP manipulada contra o endpoint webadmin.plx, explorando como o identificador de sessão (SID) é tratado antes de chegar ao serviço de backend confd. Foi encontrada via programa de bug bounty, mas depois de divulgada passou a ser explorada ativamente — está no catálogo KEV da CISA e tem módulo Metasploit, template Nuclei e PoC pública.
Detalhamento técnico
O endpoint webadmin.plx (um script Perl) processa a maior parte do tráfego web do WebAdmin. Em requisições HTTP POST, o SID enviado pelo cliente é passado ao confd (serviço de backend) para validação, e o processo tenta ler o SID como arquivo dentro do diretório /var/confd/var/sessions. Depois de passar por algumas subrotinas, esse valor chega como segundo argumento à função open() do Perl.
O problema é clássico de uso inseguro de open() em Perl com dados controlados pelo atacante: quando o segundo argumento de open() não é tratado como caminho de arquivo puro (forma de dois argumentos, sem modo explícito), o Perl pode interpretar metacaracteres do shell dentro dele, permitindo que uma string formatada como comando seja executada em vez de simplesmente aberta como arquivo.
Existe ainda um bypass de validação: uma RewriteRule (^/var → webadmin.plx) redireciona requisições para /var ao mesmo script, mas esse caminho de entrada não passa pela mesma verificação por regex aplicada ao SID normal. Isso permite substituir o valor do SID por uma string de comando (o exemplo documentado por pesquisadores usa algo equivalente a 'touch /tmp/pwned') e tê-la executada com privilégios de root, já que o serviço afetado roda com essa permissão.
Não há necessidade de sessão válida, credenciais ou interação do usuário — o atacante controla diretamente o conteúdo que acaba sendo interpretado como comando pelo interpretador de comandos do sistema.
Como é explorada
O vetor é uma única requisição HTTP (POST) contra a interface WebAdmin exposta na rede, sem necessidade de autenticação prévia. O pré-requisito real de exploração é acesso de rede à porta do WebAdmin — normalmente 4444/tcp por padrão em instalações do Sophos SG UTM — e que essa interface não esteja restrita a redes internas/confiáveis.
A complexidade é baixa: não exige engenharia social, não depende de condição de corrida, e o caminho de exploração (bypass do regex via rota /var, seguido da substituição do SID por um comando) já foi documentado publicamente, com PoC, módulo Metasploit e template Nuclei disponíveis, o que reduz a barreira técnica a praticamente zero para quem tem acesso à interface.
O resultado final é execução de comando arbitrário como root no appliance — controle total do UTM, incluindo firewall, VPN e políticas de rede que ele gerencia. A Sophos afirmou não ter evidência de exploração no momento da publicação do advisory (a falha veio de bug bounty), mas a inclusão posterior no catálogo KEV da CISA confirma exploração ativa identificada depois disso.
Versões
Como se proteger
A correção definitiva é atualizar para as versões corrigidas: v9.705 MR5, v9.607 MR7 ou v9.511 MR11 (ou posteriores), dependendo do ramo em uso. Não há patch parcial nem flag de configuração que elimine a vulnerabilidade em si — o problema está no código do webadmin.plx e só é resolvido pela atualização.
Como mitigação temporária, o próprio fornecedor recomenda restringir o acesso ao WebAdmin: em Management → WebAdmin Settings → WebAdmin Access Configuration → Allowed Networks, manter apenas a rede interna (ou outra definição de rede exclusivamente interna) como entrada permitida, removendo qualquer exposição da interface à internet. Isso reduz drasticamente a superfície de ataque, mas não corrige a falha — qualquer origem dentro da rede permitida ainda pode explorá-la sem autenticação.
Não existe mitigação eficaz via WAF genérico, já que o vetor é uma requisição legítima em formato ao endpoint nativo da aplicação (não há assinatura de payload malformado óbvia sem inspecionar a lógica específica do SID). A única mitigação real além da atualização é isolamento de rede da interface de administração.
Como detectar
Como o vetor é uma requisição HTTP/POST dirigida ao endpoint webadmin.plx (ou à rota reescrita /var) na interface WebAdmin, o sinal a procurar em logs de acesso é requisições anômalas a esses caminhos com valores de SID que não correspondem ao formato esperado de identificador de sessão — em especial strings que se parecem com comandos de shell no lugar do SID. Tentativas de exploração documentadas usam comandos simples de teste (como criação de arquivo em /tmp) para confirmar execução, o que pode deixar artefatos no sistema de arquivos do appliance.
Não há um IOC de rede universalmente confiável além disso: como o tráfego é HTTP legítimo para um endpoint nativo da aplicação, sem payload malformado óbvio, a detecção depende de logging detalhado do WebAdmin e de análise do valor do SID em requisições recebidas. A ausência de logs de acesso não implica ausência de exploração, já que appliances antigos podem não reter histórico suficiente.