
CVE-2026-9809 is a Stored Cross-Site Scripting (Stored XSS) vulnerability affecting Mautic 7 (versions 7.0.0 through 7.1.1).
CVE-2026-9809 é uma vulnerabilidade de Cross-Site Scripting Armazenado (Stored XSS) que afeta o Mautic 7 (versões 7.0.0 a 7.1.1). A falha existe no componente Projects, onde os nomes de projetos são exibidos como tags e popovers ao passar o mouse em páginas administrativas (como campanhas, e-mails e formulários) sem a devida sanitização da saída. Um usuário autenticado com permissão para criar ou editar projetos pode armazenar HTML/JavaScript malicioso no nome de um projeto. Quando um administrador visualiza posteriormente uma entidade associada a esse projeto e passa o mouse sobre a tag, o script malicioso é executado no navegador do administrador.
| Propriedade | Valor |
|---|---|
| Produto | Mautic |
| Versões Afetadas | 7.0.0 – 7.1.1 |
| Versão Corrigida | 7.1.2 |
| Componente Afetado | Projects (Tags e Popovers) |
A aplicação armazena nomes de projetos fornecidos por usuários autenticados. Posteriormente, quando as tags de projeto e o conteúdo dos popovers são renderizados em páginas administrativas, o valor armazenado é inserido no HTML sem a devida codificação ou sanitização da saída.
Conceitualmente:
User creates project
│
▼
Project name stored in database
│
▼
Administrator opens Campaign / Email / Form
│
▼
Project tag & popover rendered
│
▼
Project name inserted into HTML without sanitization
│
▼
Browser executes embedded JavaScript
Em vez de tratar o nome do projeto como texto simples, o navegador o interpreta como HTML, permitindo que o JavaScript incorporado seja executado.
Attacker
│
▼
Creates a project with a malicious project name
│
▼
Payload stored in database
│
▼
Administrator views Campaign / Email / Form
│
▼
Administrator hovers over the project tag
│
▼
Popover renders unsanitized project name
│
▼
Browser executes JavaScript
│
▼
Actions performed with administrator's privileges
Suponha que um usuário autenticado crie um projeto cujo nome contenha HTML em vez de texto comum.
O projeto é salvo com sucesso porque a aplicação não sanitiza o nome do projeto na entrada.
Posteriormente, um administrador abre uma campanha associada a esse projeto. Quando o administrador passa o mouse sobre a tag do projeto, a aplicação gera um popover usando o nome armazenado do projeto. Como o conteúdo é inserido na página sem a devida codificação da saída, o navegador o interpreta como HTML em vez de texto simples, fazendo com que o JavaScript incorporado seja executado na sessão do administrador.
A exploração bem-sucedida pode permitir que um atacante:
A vulnerabilidade impacta principalmente a confidencialidade e a integridade.
| Métrica | Pontuação |
|---|---|
| CVSS v3.1 (CNA) | 7.6 (Alta) |
O NVD ainda não publicou sua própria avaliação CVSS; a pontuação atual é fornecida pelo CNA da Mautic.
Nota: O fornecedor não publicou o código-fonte vulnerável exato. O seguinte ilustra o padrão da vulnerabilidade.
// Project name retrieved from the server
const projectName = response.project.name;
// Unsafe: inserts user-controlled HTML
popover.innerHTML = `
<span class="project-tag">
${projectName}
</span>
`;
O innerHTML faz com que o navegador interprete o nome armazenado do projeto como HTML. Se o nome do projeto contiver elementos HTML com manipuladores de eventos JavaScript, o navegador os executa ao renderizar o popover.
const tag = document.createElement("span");
tag.className = "project-tag";
// Safe: treat input as plain text
tag.textContent = response.project.name;
popover.replaceChildren(tag);
O uso de textContent garante que o nome do projeto seja tratado como texto literal em vez de HTML. Quaisquer caracteres especiais de HTML são exibidos em vez de interpretados pelo navegador, impedindo a execução de scripts incorporados. Quando a renderização de HTML for necessária, os desenvolvedores devem sanitizar o conteúdo não confiável usando um sanitizador de HTML bem mantido antes da inserção.