<?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>Fri, 30 Oct 2026 13:24:05 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-118660</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-118660</link>
      <description>&lt;p&gt;Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. Prior to 21.0.0, Happy DOM loads iframe src URLs and link rel=&amp;#34;stylesheet&amp;#34; href URLs by default while parsing untrusted HTML on the server because disableIframePageLoading and disableCSSFileLoading default to false. An attacker who controls parsed HTML can therefore cause server-side requests to arbitrary internal or cloud endpoints without an application opt-in and may expose confidential responses or credentials returned by those endpoints. This issue is fixed in version 21.0.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. Prior to 21.0.0, Happy DOM loads iframe src URLs and link rel=&amp;#34;stylesheet&amp;#34; href URLs by default while parsing untrusted HTML on the server because disableIframePageLoading and disableCSSFileLoading default to false. An attacker who controls parsed HTML can therefore cause server-side requests to arbitrary internal or cloud endpoints without an application opt-in and may expose confidential responses or credentials returned by those endpoints. This issue is fixed in version 21.0.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-118660</guid>
    </item>
    <item>
      <title>GHSA-c8p4-j97h-3vg8 — Happy DOM: SSRF via iframe and link stylesheet when parsing untrusted HTML</title>
      <link>https://db.gcve.eu/vuln/ghsa-c8p4-j97h-3vg8</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: happy-dom&lt;/p&gt;
&lt;p&gt;## Summary
happy-dom v20.8.9 makes real server-side HTTP requests to arbitrary URLs when parsing HTML containing `&amp;lt;iframe&amp;gt;` or `&amp;lt;link rel=&amp;#34;stylesheet&amp;#34;&amp;gt;` elements. This behavior is enabled by default (`disableIframePageLoading: false`, `disableCSSFileLoading: false`). When an application uses happy-dom to parse untrusted HTML on the server side, an attacker can trigger Server-Side Request Forgery by embedding these elements.&lt;/p&gt;
&lt;p&gt;## Affected Versions
- happy-dom &amp;lt;= 20.8.9 (latest)&lt;/p&gt;
&lt;p&gt;## Vulnerable Behavior&lt;/p&gt;
&lt;p&gt;By default, happy-dom has:
- `disableIframePageLoading: false` — iframes fetch their `src` URL via real HTTP requests
- `disableCSSFileLoading: false` — `&amp;lt;link&amp;gt;` stylesheets fetch their `href` URL via real HTTP requests&lt;/p&gt;
&lt;p&gt;When untrusted HTML is parsed, these elements trigger real server-side HTTP requests to whatever URLs are specified. No special configuration or opt-in is needed.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;### Verified test (attacker server receives requests):
```javascript
const http = require(&amp;#39;http&amp;#39;);
const { Window } = require(&amp;#39;happy-dom&amp;#39;);&lt;/p&gt;
&lt;p&gt;// Start attacker server
const srv = http.createServer((req, res) =&amp;gt; {
    console.log(`SSRF HIT: ${req.method} ${req.url}`);
    res.writeHead(200, {&amp;#39;Content-Type&amp;#39;: &amp;#39;text/html&amp;#39;});
    res.end(&amp;#39;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;stolen&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;#39;);
});&lt;/p&gt;
&lt;p&gt;srv.listen(9995, () =&amp;gt; {
    // iframe SSRF — happy-dom makes a real GET request
    const win1 = new Window({ url: &amp;#39;http://localhost&amp;#39; });
    win1.document.write(&amp;#39;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;iframe src=&amp;#34;http://127.0.0.1:9995/…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: happy-dom&lt;/p&gt;
&lt;p&gt;## Summary
happy-dom v20.8.9 makes real server-side HTTP requests to arbitrary URLs when parsing HTML containing `&amp;lt;iframe&amp;gt;` or `&amp;lt;link rel=&amp;#34;stylesheet&amp;#34;&amp;gt;` elements. This behavior is enabled by default (`disableIframePageLoading: false`, `disableCSSFileLoading: false`). When an application uses happy-dom to parse untrusted HTML on the server side, an attacker can trigger Server-Side Request Forgery by embedding these elements.&lt;/p&gt;
&lt;p&gt;## Affected Versions
- happy-dom &amp;lt;= 20.8.9 (latest)&lt;/p&gt;
&lt;p&gt;## Vulnerable Behavior&lt;/p&gt;
&lt;p&gt;By default, happy-dom has:
- `disableIframePageLoading: false` — iframes fetch their `src` URL via real HTTP requests
- `disableCSSFileLoading: false` — `&amp;lt;link&amp;gt;` stylesheets fetch their `href` URL via real HTTP requests&lt;/p&gt;
&lt;p&gt;When untrusted HTML is parsed, these elements trigger real server-side HTTP requests to whatever URLs are specified. No special configuration or opt-in is needed.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;### Verified test (attacker server receives requests):
```javascript
const http = require(&amp;#39;http&amp;#39;);
const { Window } = require(&amp;#39;happy-dom&amp;#39;);&lt;/p&gt;
&lt;p&gt;// Start attacker server
const srv = http.createServer((req, res) =&amp;gt; {
    console.log(`SSRF HIT: ${req.method} ${req.url}`);
    res.writeHead(200, {&amp;#39;Content-Type&amp;#39;: &amp;#39;text/html&amp;#39;});
    res.end(&amp;#39;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;stolen&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;#39;);
});&lt;/p&gt;
&lt;p&gt;srv.listen(9995, () =&amp;gt; {
    // iframe SSRF — happy-dom makes a real GET request
    const win1 = new Window({ url: &amp;#39;http://localhost&amp;#39; });
    win1.document.write(&amp;#39;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;iframe src=&amp;#34;http://127.0.0.1:9995/…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-c8p4-j97h-3vg8</guid>
    </item>
  </channel>
</rss>
