CVE-2010-4345
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Escalação de privilégio local no Exim (≤4.72): o usuário 'exim' pode invocar o binário com um arquivo de configuração alternativo (-C) contendo diretivas de expansão como spool_directory, e essas diretivas com ${run{...}} são executadas como root porque o binário Exim é setuid-root. A falha importa porque foi explorada ativamente em conjunto com uma RCE remota separada (CVE-2010-4344) que dá o primeiro acesso como usuário exim — a cadeia completa vira root remoto.
Detalle técnico
O Exim roda como setuid-root para poder escutar em portas privilegiadas e escrever no spool. Historicamente, o usuário 'exim' (ou um usuário 'trusted') tinha permissão para chamar o binário com a flag -C, apontando para um arquivo de configuração arbitrário — recurso pensado para testes e depuração. O problema (CWE-269, gerenciamento inadequado de privilégio, com componente de CWE-78/injeção de comando via expansão de string) é que diretivas dentro desse arquivo de configuração, como spool_directory, passam pelo mecanismo de expansão de string do Exim, que suporta o operador ${run{...}}. Como o processo ainda está com privilégios de root no momento em que processa esse arquivo alternativo, qualquer comando dentro de ${run{...}} nessa diretiva é executado como root, não como o usuário exim.
A causa raiz identificada pelos desenvolvedores do Exim e documentada pelo CERT/CC é que a opção de compilação ALT_CONFIG_ROOT_ONLY — que restringiria o uso de -C com privilégios de root apenas a configurações específicas/confiáveis — não vem habilitada por padrão em várias distribuições. Sem ela, qualquer processo capaz de executar como usuário 'exim' (que é justamente o usuário sob o qual o Exim normalmente já processa mensagens) consegue escalar para root apontando -C para um arquivo próprio.
Essa CVE-2010-4345 foi alocada junto com a CVE-2010-4344 (RCE remota que dá shell como usuário exim via expansão de string mal validada). São duas falhas distintas na mesma thread de disclosure, mas encadeáveis: a 4344 dá acesso como exim, a 4345 eleva esse acesso a root.
Cómo se explota
Pré-requisito real: o atacante precisa já ter a capacidade de executar comandos como o usuário 'exim' (ou de controlar um processo que roda com esse UID). Isso pode vir de acesso local legítimo, de um usuário no mesmo grupo, ou — no cenário mais grave observado in the wild — de uma exploração remota prévia como a CVE-2010-4344, que entrega esse shell inicial. Não é uma falha explorável por um usuário remoto anônimo isoladamente; o vetor CVSS (AV:L, PR:L) reflete exatamente essa exigência de privilégio local prévio.
Com shell como 'exim', o ataque consiste em criar um arquivo de configuração próprio contendo uma diretiva expansível (spool_directory foi a usada na demonstração pública) com um operador ${run{...}} embutindo o comando desejado, e invocar o binário Exim com -C apontando para esse arquivo. Se o binário não foi compilado com ALT_CONFIG_ROOT_ONLY, a expansão ocorre com os privilégios de root ainda ativos, executando o comando arbitrário como root.
A CISA lista a CVE-2010-4345 no catálogo KEV com confirmação de exploração ativa desde a época da divulgação (dezembro de 2010), e existem módulo Metasploit e PoC públicos, o que reduz a complexidade de exploração para quase trivial uma vez obtido o acesso como usuário exim. O CERT/CC documentou o caso como descoberto justamente por análise de exploração real (Sergey Kononenko), não por pesquisa acadêmica prévia.
Versiones
Cómo protegerse
A correção oficial dos mantenedores do Exim foi publicada como patch na lista de discussão em 09/12/2010 e incorporada nas versões subsequentes do software; múltiplas distribuições (SUSE, Red Hat) trataram o caso como update de pacote a partir de dezembro de 2010. Atualize para a versão do Exim que inclui esse patch na sua distribuição — confirme o número exato no changelog oficial ou no pacote da sua distro, já que as fontes consultadas não fixam um único número de versão corrigida de forma unânime.
Se atualizar não for possível de imediato, o paliativo documentado pelo próprio CERT/CC é garantir que o binário Exim tenha sido compilado com a opção ALT_CONFIG_ROOT_ONLY habilitada. O custo real disso: o usuário 'exim' perde a capacidade de invocar -C com um arquivo de configuração alternativo e ainda obter privilégios de root — cenários legítimos que dependiam disso (múltiplas configurações operando com privilégio elevado) deixam de funcionar e precisam ser redesenhados.
Não existe mitigação eficaz via WAF ou controle de borda, porque a falha é inteiramente local e pós-exploração — ela não trafega em rede. Restringir quem pode obter shell como usuário 'exim' (isolamento de processo, remoção de binários setuid não usados, hardening geral de host) reduz a superfície, mas não substitui a correção no binário/opção de compilação.
Cómo detectar
Em nível de host, procure invocações do binário Exim com a flag -C fora de contextos administrativos esperados, especialmente originadas pelo UID/usuário 'exim' e apontando para arquivos de configuração fora dos diretórios padrão. Auditoria de execução (auditd/execve) que capture argumentos de linha de comando é o sinal mais confiável, já que não há assinatura de rede — a exploração é inteiramente local, pós-comprometimento.
Como pré-condição comum é obter shell como 'exim' via CVE-2010-4344, correlacione também logs do próprio Exim (main log, panic log) por erros de expansão de string ou reinícios anômalos do processo por volta do momento da escalada, e verifique arquivos de configuração temporários criados por processos com UID exim pouco antes de uma execução com privilégio root inesperada.