<?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://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-22T14:30:23.569818+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" 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://db.gcve.eu/vuln/fkie_cve-2026-113654</id>
    <title>fkie_cve-2026-113654</title>
    <updated>2026-10-22T14:30:23.586841+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. Prior to sanitize-html 2.18.0, a non-default nonTextTags configuration that includes noscript can end its discard region early when htmlparser2 emits an implied ancestor close inside noscript. Because scripting-enabled browsers treat noscript content as raw text while the parser does not model that mode, content intended to remain inert can survive sanitization and render; the issue does not generalize to every default nonTextTags element. This issue is fixed in sanitize-html 2.18.0.</p>
      </div>
    </content>
    <link href="https://db.gcve.eu/vuln/fkie_cve-2026-113654"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-x3q4-9hxx-gx8m</id>
    <title>GHSA-x3q4-9hxx-gx8m — ApostropheCMS sanitize-html: nonTextTags discard region ends early on an implied close, letting &lt;noscript&gt; content rend…</title>
    <updated>2026-10-22T14:30:23.586926+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: sanitize-html</p>
<p>## Summary</p>
<p>`sanitize-html` discards the *content* of every element in `nonTextTags`. It delimits that region
using htmlparser2's close events, and ignores the `isImplied` flag htmlparser2 passes it. Closing a
still-open **ancestor** from inside a `&lt;noscript&gt;` makes htmlparser2 unwind its stack past the
`noscript`; the synthetic implied close it emits on the way ends the discard region early, and
everything after it is treated as ordinary body content.</p>
<p>A browser with scripting enabled parses `&lt;noscript&gt;` content as **raw text**, so the same markup
renders as inert text there. The sanitizer therefore emits elements the page itself would not have.</p>
<p>## Reproduction</p>
<p>```js
const sanitizeHtml = require("sanitize-html");</p>
<p>sanitizeHtml('&lt;div&gt;&lt;noscript&gt;&lt;/div&gt;&lt;img src="http://evil.test/t.gif"&gt;&lt;/noscript&gt;', {
  allowedTags: ["div", "img"],
  allowedAttributes: { img: ["src"] },
  nonTextTags: ["script", "style", "textarea", "option", "noscript"],
});
// =&gt; '&lt;div&gt;&lt;/div&gt;&lt;img src="http://evil.test/t.gif" /&gt;'
```</p>
<p>Chrome, given the same input, renders **no** `&lt;img&gt;` — the whole payload is raw text inside the
unclosed `&lt;noscript&gt;`. Verified with Playwright, `srcdoc` into an iframe so the scripting flag is on.</p>
<p>A `&lt;![CDATA[` variant hides the opening tag from the parser entirely and has the same effect:</p>
<p>```
&lt;p&gt;Hi&lt;/p&gt;&lt;![CDATA[ x &gt; &lt;noscript&gt;]]&gt;&lt;a href="…"&gt;Reset your password&lt;/a&gt;&lt;img src="…beacon.gif"&gt;&lt;/noscript&gt;
```</p>
<p>htmlparser2 runs a CDATA token to `]]&gt;`; Chrome ends a bogus comment at t…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-x3q4-9hxx-gx8m"/>
  </entry>
</feed>
