<?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-28T23:48:11.029395+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/ghsa-h8r8-wccr-v5f2</id>
    <title>GHSA-h8r8-wccr-v5f2 — DOMPurify is vulnerable to mutation-XSS via Re-Contextualization</title>
    <updated>2026-09-28T23:48:11.032153+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: dompurify</p>
<p>## Description</p>
<p>A mutation-XSS (mXSS) condition was confirmed when sanitized HTML is reinserted into a new parsing context using `innerHTML` and special wrappers. The vulnerable wrappers confirmed in browser behavior are `script`, `xmp`, `iframe`, `noembed`, `noframes`, and `noscript`. The payload remains seemingly benign after `DOMPurify.sanitize()`, but mutates during the second parse into executable markup with an event handler, enabling JavaScript execution in the client (`alert(1)` in the PoC).</p>
<p>## Vulnerability</p>
<p>The root cause is context switching after sanitization: sanitized output is treated as trusted and concatenated into a wrapper string (for example, `&lt;xmp&gt; ... &lt;/xmp&gt;` or other special wrappers) before being reparsed by the browser. In this flow, attacker-controlled text inside an attribute (for example `&lt;/xmp&gt;` or equivalent closing sequences for each wrapper) closes the special parsing context early and reintroduces attacker markup (`&lt;img ... onerror=...&gt;`) outside the original attribute context. DOMPurify sanitizes the original parse tree, but the application performs a second parse in a different context, reactivating dangerous tokens (classic mXSS pattern).</p>
<p>## PoC</p>
<p>1. Start the PoC app:
```bash
npm install
npm start
```</p>
<p>2. Open `http://localhost:3001`.
3. Set `Wrapper en sink` to `xmp`.
4. Use payload:
```html
 &lt;img src=x alt="&lt;/xmp&gt;&lt;img src=x onerror=alert('expoc')&gt;"&gt;
```</p>
<p>5. Click `Sanitize + Render`.
6. Observe:
- `Sanitized response` still contains t…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-h8r8-wccr-v5f2"/>
  </entry>
</feed>
