← voltar
CVE-2023-5631mediumsob ataqueCWE-79

Stored XSS vulnerability in Roundcube

65Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA.

ssvc Actcvss 6.1epss 76%
da publicação à arma
Publicada no NVD18 de out.
CISA KEV+8d
probabilidade de exploração
76%top 1% das CVEs
exploração observada
simCISA + VulnCheck
Ação exigida pela CISAprazo federal: 2023-11-16

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Resumo

Falha de XSS armazenado no sanitizador HTML do Roundcube (rcube_washtml.php), explorável por meio de um e-mail HTML contendo uma imagem SVG embutida como data URI. Como o sanitizador é a única barreira entre o HTML de um e-mail arbitrário e o DOM da interface webmail, um bypass nele permite executar JavaScript no contexto da sessão do usuário só pelo fato de a mensagem ser exibida — está no catálogo KEV da CISA por exploração confirmada em campanhas reais contra webmail.

Detalhamento técnico

O rcube_washtml.php processa URIs do tipo data:image/... para decidir se sanitiza o conteúdo como SVG. A checagem original comparava o tipo MIME extraído via regex (`$matches[1]`) contendo a substring 'svg' sem normalizar espaços em branco. Um atacante podia inserir espaço, tab ou nova linha dentro da string 'svg' (ex.: 'image/s vg+xml' ou 'image/s\nvg+xml'), o que fazia o stripos() por 'svg' falhar — o washtml não reconhecia o payload como SVG e, portanto, não aplicava a sanitização destinada a remover atributos de evento e scripts.

Como é explorada

O vetor é um e-mail HTML malicioso: um elemento aponta para um SVG codificado em base64 contendo, por exemplo, um — a manipulação do tipo MIME com espaço em branco engana o filtro. Quando a vítima abre a mensagem na interface webmail (nenhuma ação além de visualizar o e-mail é necessária, daí UI:R no vetor CVSS), o navegador processa a data URI, o SVG interno é renderizado e o manipulador de evento onerror/onload dispara, executando JavaScript arbitrário no DOM autenticado do Roundcube.

Versões

Afetadas
Roundcube antes de 1.4.15; 1.5.x antes de 1.5.5; 1.6.x antes de 1.6.4
Corrigidas em
1.4.15, 1.5.5, 1.6.4

Como se proteger

Atualizar para 1.4.15, 1.5.5 ou 1.6.4, que normalizam a string de tipo MIME (removendo espaços) antes de checar 'svg' e antes de checar base64, eliminando o bypass. Não há flag de configuração ou parâmetro do washtml que mitigue isso sem patch, porque o bug está na lógica central de sanitização; a única mitigação paliativa real é forçar exibição de e-mails em texto simples (desabilitando renderização HTML) ou filtrar/bloquear anexos e corpos de mensagem contendo data URIs de SVG em um gateway de e-mail — ambas quebram funcionalidade e não substituem o patch.

Como detectar

Procurar no corpo de mensagens armazenadas por data URIs do tipo image/svg+xml com espaço, tabulação ou nova linha inseridos dentro da palavra 'svg' (ex.: 'image/s vg+xml', 'image/s\nvg+xml'), geralmente dentro de tags ou em conteúdo base64. Como o payload fica armazenado na caixa de mensagens e só é ativado no momento da renderização pelo cliente, não há sinal de rede confiável — a análise precisa ser feita no conteúdo das mensagens (banco/armazenamento IMAP) ou em logs de aplicação do Roundcube se houver alerta de erro JS reportado pelo usuário.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Roundcube before 1.4.15, 1.5.x before 1.5.5, and 1.6.x before 1.6.4 allows stored XSS via an HTML e-mail message with a crafted SVG document because of program/lib/Roundcube/rcube_washtml.php behavior. This could allow a remote attacker to load arbitrary JavaScript code.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N