Alerta de segurança do Plone 20260605
Uma falha em campos RichText permite XSS armazenado quando o tipo MIME do valor é falsificado. Afeta a Classic UI; o Volto não é afetado. Há correções no plone.app.textfield e no plone.restapi.
Em nome do Plone Security Team, foram publicados dois avisos de vulnerabilidade no GitHub, que tratam de dois lados da mesma falha:
- Stored XSS by spoofing mime type — plone.app.textfield
- Stored XSS by spoofing mime type — plone.restapi
A vulnerabilidade foi descoberta por @gyst, que a relatou a security@plone.org e enviou as correções e os testes. Obrigado!
Impacto
É um XSS armazenado que afeta campos RichText. O RichTextValue.output devolve o valor guardado, sem sanitização, sempre que o tipo MIME armazenado é igual ao tipo de saída. Como o tipo de saída seguro (text/x-html-safe) significa "já sanitizado", qualquer valor guardado com esse tipo escapa da transformação safe_html ao ser exibido. A transformação em si funciona; o problema é que ela nunca é chamada nesses casos, e o conteúdo é exibido sem escape, executando o código no navegador de quem visita a página.
Isso acontece quando um campo RichText é definido no código com os mesmos mimeType e outputMimeType, ou quando a REST API é usada para obter o mesmo efeito.
Esses campos só são usados na Classic UI: o Volto não é afetado.
Correção
O problema foi corrigido em todas as versões suportadas do Plone:
- Plone 6.0: atualize o plone.app.textfield para 2.0.2 e o plone.restapi para 9.15.6.
- Plone 6.1: atualize o plone.app.textfield para 3.0.2 e o plone.restapi para 9.15.6.
- Plone 6.2: atualize o plone.app.textfield para 4.0.1 e o plone.restapi para 10.0.1.
A correção do plone.restapi impede que a REST API seja usada para guardar valores inválidos. Se valores assim já estiverem no seu site, a correção do plone.app.textfield impede o XSS. Não há alternativa conhecida à atualização.

