← volver
CVE-2020-12641criticalbajo ataqueCWE-78

CVE-2020-12641

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 9.8epss 84%
de la publicación al arma1435 días
Publicada en NVD4 may
1ª PoC+1435d
CISA KEV+1144d
probabilidad de explotación
84%top 1% de las CVE
explotación observada
CISA + VulnCheck
2 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2023-07-13

Apply updates per vendor instructions.

Resumen

Falha de command injection (CWE-78) em rcube_image.php do Roundcube Webmail, herdada por qualquer versão anterior à 1.4.4 (e correspondentes 1.3.11/1.2.10). O código concatenava o valor das opções de configuração im_convert_path e im_identify_path diretamente num comando de shell sem escapar caracteres especiais, permitindo execução arbitrária de comandos no servidor. O CVSS 9.8 sugere um ataque remoto trivial e sem autenticação, mas a exploração real depende de o instalador do Roundcube (installer/index.php) estar acessível publicamente e com o arquivo de configuração gravável — algo que o próprio fornecedor classifica como cenário de risco raro em produção, embora ainda assim documentado e explorado na prática (está no KEV da CISA).

Detalle técnico

O problema está nos métodos resize(), convert() e identify() de program/lib/Roundcube/rcube_image.php. Esses métodos montam uma string de comando concatenando o caminho configurado do ImageMagick (im_convert_path ou im_identify_path) com argumentos fixos (flags de qualidade, resize, formato) e depois passam essa string para rcube::exec(), que executa via shell. Os placeholders de argumento ({in}, {out}, {size} etc.) já eram devidamente escapados, mas o próprio valor de $convert/$cmd — origem da configuração — não passava por nenhuma sanitização antes de entrar na string de comando.

Se im_convert_path ou im_identify_path contiver metacaracteres de shell (ponto e vírgula, pipe, backticks, `$()`, `&&` etc.), o que vem depois do metacaractere é interpretado como um comando adicional pelo shell, e não como argumento do binário do ImageMagick. Isso é injeção de comando clássica: o atacante controla integralmente o valor dessas duas chaves de configuração.

A correção (commit fcfb099) envolve chamar escapeshellcmd() sobre o valor de $convert/$cmd antes de concatenar, nos três pontos onde isso ocorria (resize, convert, identify). Não há sanitização de entrada anterior a essa mudança — a superfície inteira do bug é a ausência desse escape.

O gatilho de execução é automático: o Roundcube chama identify()/convert()/resize() sempre que precisa processar uma imagem anexada ou embutida num e-mail (por exemplo, converter um formato não padrão como TIFF para JPEG para exibição). Basta a vítima abrir/visualizar o e-mail malicioso — não é preciso clicar em nada além disso.

Cómo se explota

O vetor documentado publicamente (DrunkenShells) funciona em duas etapas. Primeiro, o atacante envia uma requisição POST para installer/index.php contendo o payload de injeção no campo _im_convert_path (por exemplo, um comando para abrir uma reverse shell em PHP), fazendo o instalador escrever essa configuração maliciosa no arquivo de configuração do Roundcube. Segundo, o atacante envia à vítima um e-mail com uma imagem em formato não padrão (ex.: TIFF); quando qualquer usuário abre esse e-mail no webmail, o Roundcube tenta converter a imagem chamando o 'ImageMagick' configurado, executando o comando injetado e devolvendo shell reversa ao atacante.

A pré-condição crítica que a manchete de CVSS 9.8 esconde é a etapa um: o script installer/ precisa estar acessível pela rede e o config.inc.php precisa ser gravável pelo processo web — situação que o Roundcube já orienta a eliminar (remover ou bloquear o diretório installer/ após a configuração inicial) exatamente por ser um vetor de comprometimento total. Em instalações onde isso foi feito corretamente, a falha não é explorável remotamente por um atacante não autenticado; ela só se torna crítica em instalações negligenciadas, PaaS/hosting compartilhado com instalador exposto, ou onde um administrador malicioso/comprometido já tem acesso a essas configurações.

Há exploração confirmada em ambiente real (entrada no catálogo KEV da CISA), PoC pública e template Nuclei, o que eleva o EPSS (~0,84) mesmo considerando a pré-condição. Uma vez atingido o RCE, o impacto é total: comprometimento do processo do webmail, acesso a e-mails de todos os usuários, pivotagem lateral a partir do servidor de mail.

Versiones

Afectadas
Roundcube Webmail anterior a 1.4.4 na série 1.4.x; segundo o writeup de terceiros, também afeta as séries 1.3.x anteriores a 1.3.11 e 1.2.x anteriores a 1.2.10.
Corregidas en
1.4.4 (branch 1.4.x); 1.3.11 (branch 1.3.x); 1.2.10 (branch 1.2.x). Um bypass posterior foi corrigido em 1.4.5/1.3.12 (tratado como falha relacionada, não coberta diretamente por este CVE).

Cómo protegerse

Atualizar para Roundcube Webmail 1.4.4 ou posterior. Os ramos mais antigos foram corrigidos em versões correspondentes — a documentação do fornecedor e o writeup de terceiros citam 1.3.11 e 1.2.10 como os releases de correção para as respectivas séries 1.3.x e 1.2.x. Se não for possível atualizar imediatamente, o controle compensatório real é garantir que o diretório installer/ esteja removido do servidor de produção ou bloqueado por controle de acesso (é a orientação padrão do próprio projeto após qualquer instalação/upgrade) e que o arquivo config.inc.php não seja gravável pelo processo do servidor web depois da configuração inicial — isso fecha o único caminho prático de injetar valores maliciosos em im_convert_path/im_identify_path.

Após a correção original (1.4.4/1.3.11/1.2.10), foi descoberto um bypass (via injeção de flags em executáveis arbitrários e chamada de executáveis remotos em ambientes Windows) corrigido em versões posteriores (1.4.5/1.3.12) — quem aplicou apenas o patch de CVE-2020-12641 sem seguir para essas versões ainda pode estar exposto a essa variante, tratada sob outro identificador.

Não funciona como mitigação apenas restringir quem pode enviar e-mails à organização, já que o vetor de disparo (imagem não padrão em e-mail) é passivo e não depende de autenticação do remetente; o controle efetivo está em nunca permitir que im_convert_path/im_identify_path sejam alteráveis por terceiros e em manter o instalador fora de alcance.

Cómo detectar

Nos logs do servidor web, procurar requisições POST para /installer/index.php contendo os parâmetros _im_convert_path ou _im_identify_path com metacaracteres de shell (;, |, `, $(), &&, quebras de linha) ou comandos incomuns (fsockopen, exec, bash, powershell, curl, wget). Revisar o config.inc.php de instâncias em produção para valores de im_convert_path/im_identify_path que não sejam simplesmente o caminho de binário do ImageMagick — qualquer coisa com espaço seguido de outro comando é suspeita.

No nível de host, monitorar processos filhos anômalos originados pelo processo PHP/webmail no momento em que mensagens com anexos de imagem são abertas ou processadas (thumbnails), especialmente conexões de rede saindo do servidor de mail sem relação com tráfego IMAP/SMTP esperado. Não há uma assinatura de rede única confiável para o payload em si, já que o comando injetado é arbitrário — o sinal mais forte é a presença do instalador acessível publicamente, que por si só já indica risco independente de tentativa de exploração observada.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
rcube_image.php in Roundcube Webmail before 1.4.4 allows attackers to execute arbitrary code via shell metacharacters in a configuration setting for im_convert_path or im_identify_path.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Productos afectados
n/a · n/a
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.