Defuddle · Defuddle · CVE-2026-30830
**Nome do Software Vulnerável e Versões Afetadas**
Versões do Defuddle anteriores a 0.9.0
**Descrição**
O Defuddle contém uma falha no método ` findContentBySchemaText` dentro de `src/defuddle.ts`. Este método interpola diretamente os atributos `src` e `alt` da imagem em uma string HTML sem escape adequado. Um atacante pode explorar um caractere de aspas duplas (") dentro do atributo `alt` para sair do contexto do atributo e injetar manipuladores de eventos, levando a um possível cross-site scripting (XSS). O problema ocorre durante a construção da string, não dentro do DOM, contornando a função ` stripUnsafeElements`. A vulnerabilidade é acionada ao processar HTML com dados estruturados schema.org e uma imagem irmã com um atributo `alt` elaborado. O código afetado usa interpolação de string: `html += `<img src="${imageSrc}" alt="${imageAlt}">`;`. A função `getAttribute()` retorna valores brutos dos atributos, e a presença de um caractere de aspas no atributo `alt` permite a injeção de manipuladores de eventos como `onload`. Isso pode impactar aplicações que renderizam a saída HTML do Defuddle, como extensões de navegador, web clippers e modos de leitura.
**Recomendações**
As versões anteriores a 0.9.0 devem ser atualizadas para a versão 0.9.0 ou posterior. Como alternativa, utilize a API DOM em vez de interpolação de string ao criar elementos de imagem. Especificamente, utilize o seguinte código:
```typescript
if (imageSrc) {
const img = this.doc.createElement('img');
img.setAttribute('src', imageSrc);
img.setAttribute('alt', imageAlt);
html += img.outerHTML;
}
```
Essa abordagem garante que os valores dos atributos sejam devidamente escapados pelo serializador DOM.