A correção para CVE- 2026 - 54298 (GHSA- jrpj-wcv) 7 - 9 fh 9 ) adicionado um `INVALID_ ATTR_NAME_CHAR` guarda para `addAttribute()` para que os nomes de atributos de propagação que contêm `"' >/=` ou espaços brancos sejam abandonados. Um segundo caminho de renderização de atributos, ` rendeHTMLElement()` em `pacotes/astro/src/ runtime/ server/ rende/dom.ts`, tem seu próprio loop de atributos inline que não passa por `addAttribute()` e não foi atualizado. Ele interpola o nome do atributo sem escapulação e apenas escapa do valor, de modo que as chaves de adereço não confiáveis espalhadas em um componente nativo da subclasse 'HTMLElement` ainda podem sair do contexto do atributo, resultando em XSS. `renderHTMLElement` compila atributos diretamente. ```js for (const attr in props) { attrHTML += ` ${attr}="${toAttributeString(await props[attr])}"; } ```` O nome do atributo (`attr`) é interpolado em bruto; somente o valor é escapado via `toAttributeString`. Em contraste, o endurecido `addAttribute` em `util.ts` rejeita nomes inválidos:.

```js se (INVALID_ATTR_NAME_CHAR.test(key)) { retorna ''; } // /[\s"'>/=]/ ```. ` renderHTMLElement` é alcançado a partir de `component.ts` quando o componente é uma subclasse nativa `HTMLElement`: ```js if (!renderer && typeof HTMLElement === 'função' & & & componenteIsHTMLElement(Componente)) { saída de const = espera renderHTMLElement(resultado, componente, _props, slots); } ``` onde `_props` carrega textualmente os suportes de propagação.

O ramo só é executado quando `tipo de HTMLElement === 'função'' na hora SSR. No padrão, o Nó SSR `HTMLElement` é `indefinido`, então o ramo está morto. Ele se torna acessível quando o tempo de execução SSR expõe um `HTMLElement` global (Deno, Bun com um shim DOM, ou jsdom/ happy-dom no Node) **e** uma classe que extende `HTMLElement' é usada diretamente como um componente Astro que recebe suportes de propagação não confiáveis. Dados maliciosos props de propagação. ```js const maliciosoProps = { 'onmouseover=alert(document.domain) x': 'y', 'x> alert( 1 ) ': 'z', }; ``` - `addAttribute` (post-fix) → ` ` (chave desmontada — seguro) - ` rendeHTMLElement` → ` alert( 1 ) ="z"> ` (handler + ` ` injetado — XSS).

Modelo Astro equivalente, servido por um tempo de execução SSR que define um `HTMLElement` global: ````astro --- importar o MyElement de '../MyElement.js'; // classe O MyElement estende o HTMLElement {} usuário constInput = Astro.url.searchParams; // chaves não confiáveis --- ````` Roteiro cruzado (CWE- 79 ) via erupção de nome de atributo — a mesma classe de vulnerabilidade que CVE- 2026 - 54298, em um caminho de código, sua correção não cobriu. Um atacante que controla as teclas de um objeto espalhado em um componente nativo de subclasse de 'HTMLElement' pode injetar atributos arbitrários de manipulador de eventos ou elementos de irmãos (incluindo ` `) na saída SSR. A reachability é limitada pelos pré- preconceitos de execução e componentes descritos acima.

Registro de aconselhamento: GHSA-f 48 w- 9 m 4 c- m 7 f 5. Identificadores relacionados: CVE- 2026 - 59729. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 20 T 23: 21: 58.000 Z e lista a sua última modificação como 2026 - 08 - 12 T 20: 37: 31.000 Z. Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 4: CVSS: 4.0 /AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/África do Sul:N.

Informações sobre software e versão afetadas: astro do pacote npm — ECOSISTEM: introduzido 0, corrigido 7.0.6. Classificação e evidência: identificadores de fraqueza CWE- 79. O registro contém 6 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.