<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 21 Oct 2026 07:31:23 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-113657</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-113657</link>
      <description>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. From sanitize-html 2.17.7 until 2.18.0, an application configuration that permits namespace-prefixed SVG animation elements and the relevant URL-targeting attributes can bypass the SMIL URL protection because prefixed tag names do not match the unprefixed animation-element check. The bypass can rewrite a link destination to an unsafe URI after the sanitized SVG is rendered, with script execution occurring when a user activates the affected link; the default sanitizer configuration is not unconditionally affected. This issue is fixed in sanitize-html 2.18.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. From sanitize-html 2.17.7 until 2.18.0, an application configuration that permits namespace-prefixed SVG animation elements and the relevant URL-targeting attributes can bypass the SMIL URL protection because prefixed tag names do not match the unprefixed animation-element check. The bypass can rewrite a link destination to an unsafe URI after the sanitized SVG is rendered, with script execution occurring when a user activates the affected link; the default sanitizer configuration is not unconditionally affected. This issue is fixed in sanitize-html 2.18.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-113657</guid>
    </item>
    <item>
      <title>GHSA-374f-7chj-9948 — ApostropheCMS sanitize-html: SMIL animation namespace-prefix bypass allows javascript: URI injection (XSS)</title>
      <link>https://db.gcve.eu/vuln/ghsa-374f-7chj-9948</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: sanitize-html&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;sanitize-html 2.17.7 introduced `animatesUrlAttribute()` to block SVG animation elements (`animate`, `animateColor`, `animateMotion`, `animateTransform`, `set`) when their `attributeName` targets a URL sink like `href`. However, this check is bypassed when the animation element uses a namespace prefix (e.g., `svg:animate` instead of `animate`).&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;The `animatesUrlAttribute` function (index.js, line ~832) checks `svgAnimationTags.indexOf(name.toLowerCase())`, where `svgAnimationTags` contains bare local names: `[&amp;#34;animate&amp;#34;, &amp;#34;animatecolor&amp;#34;, &amp;#34;animatemotion&amp;#34;, &amp;#34;animatetransform&amp;#34;, &amp;#34;set&amp;#34;]`. htmlparser2 passes namespace-prefixed tag names verbatim, so `svg:animate` does not match `animate` in the array, causing the function to return `false` and skip the SMIL XSS protection.&lt;/p&gt;
&lt;p&gt;Ironically, the function already handles namespace prefixes correctly for the `attributeName` target value (line ~843): `const localName = target.slice(target.lastIndexOf(&amp;#34;:&amp;#34;) + 1)` — but this same stripping was not applied to the tag name itself.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;```javascript
const sanitizeHtml = require(&amp;#34;sanitize-html&amp;#34;);&lt;/p&gt;
&lt;p&gt;const config = {
  allowedTags: false,
  allowedAttributes: false,
  allowedSchemes: [&amp;#34;http&amp;#34;, &amp;#34;https&amp;#34;]
};&lt;/p&gt;
&lt;p&gt;// Standard animate — BLOCKED by 2.17.7 fix
const blocked = sanitizeHtml(
  `&amp;lt;svg&amp;gt;&amp;lt;a href=&amp;#34;#safe&amp;#34;&amp;gt;&amp;lt;animate attributeName=&amp;#34;href&amp;#34; values=&amp;#34;#safe;javascript:alert(1)&amp;#34; dur=&amp;#34;.01s&amp;#34; fill=&amp;#34;freeze&amp;#34;/&amp;gt;&amp;lt;text&amp;gt;Click&amp;lt;/text&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/svg&amp;gt;`,
  config
);
console.log(&amp;#34;Standard ani…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: sanitize-html&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;sanitize-html 2.17.7 introduced `animatesUrlAttribute()` to block SVG animation elements (`animate`, `animateColor`, `animateMotion`, `animateTransform`, `set`) when their `attributeName` targets a URL sink like `href`. However, this check is bypassed when the animation element uses a namespace prefix (e.g., `svg:animate` instead of `animate`).&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;The `animatesUrlAttribute` function (index.js, line ~832) checks `svgAnimationTags.indexOf(name.toLowerCase())`, where `svgAnimationTags` contains bare local names: `[&amp;#34;animate&amp;#34;, &amp;#34;animatecolor&amp;#34;, &amp;#34;animatemotion&amp;#34;, &amp;#34;animatetransform&amp;#34;, &amp;#34;set&amp;#34;]`. htmlparser2 passes namespace-prefixed tag names verbatim, so `svg:animate` does not match `animate` in the array, causing the function to return `false` and skip the SMIL XSS protection.&lt;/p&gt;
&lt;p&gt;Ironically, the function already handles namespace prefixes correctly for the `attributeName` target value (line ~843): `const localName = target.slice(target.lastIndexOf(&amp;#34;:&amp;#34;) + 1)` — but this same stripping was not applied to the tag name itself.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;```javascript
const sanitizeHtml = require(&amp;#34;sanitize-html&amp;#34;);&lt;/p&gt;
&lt;p&gt;const config = {
  allowedTags: false,
  allowedAttributes: false,
  allowedSchemes: [&amp;#34;http&amp;#34;, &amp;#34;https&amp;#34;]
};&lt;/p&gt;
&lt;p&gt;// Standard animate — BLOCKED by 2.17.7 fix
const blocked = sanitizeHtml(
  `&amp;lt;svg&amp;gt;&amp;lt;a href=&amp;#34;#safe&amp;#34;&amp;gt;&amp;lt;animate attributeName=&amp;#34;href&amp;#34; values=&amp;#34;#safe;javascript:alert(1)&amp;#34; dur=&amp;#34;.01s&amp;#34; fill=&amp;#34;freeze&amp;#34;/&amp;gt;&amp;lt;text&amp;gt;Click&amp;lt;/text&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/svg&amp;gt;`,
  config
);
console.log(&amp;#34;Standard ani…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-374f-7chj-9948</guid>
    </item>
  </channel>
</rss>
