<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T18:31:50.336585+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-30830</id>
    <title>CVE-2026-30830 — Defuddle: XSS via unescaped string interpolation in _findContentBySchemaText image tag</title>
    <updated>2026-09-28T18:31:50.338397+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> kepano defuddle</p>
<p>Defuddle cleans up HTML pages. Prior to version 0.9.0, the _findContentBySchemaText method in src/defuddle.ts interpolates image src and alt attributes directly into an HTML string without escaping. An attacker can use a " in the alt attribute to break out of the attribute context and inject event handler. This issue has been patched in version 0.9.0.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-30830"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-5mq8-78gm-pjmq</id>
    <title>GHSA-5mq8-78gm-pjmq — defuddle vulnerable to XSS via unescaped string interpolation in _findContentBySchemaText image tag</title>
    <updated>2026-09-28T18:31:50.338506+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: defuddle</p>
<p>### Summary</p>
<p>The `_findContentBySchemaText` method in `src/defuddle.ts` interpolates image `src` and `alt` attributes directly into an HTML string without escaping:</p>
<p>```typescript
html += `&lt;img src="${imageSrc}" alt="${imageAlt}"&gt;`;
```</p>
<p>An attacker can use a `"` in the `alt` attribute to break out of the attribute context and inject event handlers. This is a separate vulnerability from the sanitization bypass fixed in f154cb7 — the injection happens during string construction, not in the DOM, so `_stripUnsafeElements` cannot catch it.</p>
<p>### Details</p>
<p>When `_findContentBySchemaText` finds a sibling image outside the matched content element, it reads the image's `src` and `alt` attributes via `getAttribute()` and interpolates them into a template literal. `getAttribute('alt')` returns the raw attribute value. If the alt contains `"`, it terminates the `alt` attribute in the interpolated HTML string, and subsequent content becomes new attributes (including event handlers).</p>
<p>The recently added `_stripUnsafeElements()` (commit f154cb7) strips `on*` attributes from DOM elements, but the `alt` attribute's name is `alt` (not `on*`), so it is preserved with its full value. The `onload` handler is created by the string interpolation, not present in the original DOM.</p>
<p>### PoC</p>
<p>Input HTML:</p>
<p>```html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;PoC&lt;/title&gt;
&lt;script type="application/ld+json"&gt;
{"@type": "Article", "text": "Long article text repeated many times to exceed the extracted content word co…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-5mq8-78gm-pjmq"/>
  </entry>
</feed>
