<?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://vulnerability.circl.lu</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, 02 Oct 2026 11:47:07 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-63643</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-63643</link>
      <description>&lt;p&gt;MagicMirror² is an open source modular smart mirror platform. Prior to 2.37.0, the ADD_CALENDAR handler in defaultmodules/calendar/node_helper.js accepts an attacker-controlled URL, authentication data, and selfSignedCert setting through the unauthenticated Socket.IO namespace /calendar. The handler passes these fields to CalendarFetcher, causing a server-side request without SSRF validation and optionally disabling TLS verification. When the response is valid iCal, CALENDAR_EVENTS returns parsed event data to the attacker, allowing internal-service response data to be exfiltrated; other responses still provide a blind request and timing primitive. This issue is fixed in version 2.37.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;MagicMirror² is an open source modular smart mirror platform. Prior to 2.37.0, the ADD_CALENDAR handler in defaultmodules/calendar/node_helper.js accepts an attacker-controlled URL, authentication data, and selfSignedCert setting through the unauthenticated Socket.IO namespace /calendar. The handler passes these fields to CalendarFetcher, causing a server-side request without SSRF validation and optionally disabling TLS verification. When the response is valid iCal, CALENDAR_EVENTS returns parsed event data to the attacker, allowing internal-service response data to be exfiltrated; other responses still provide a blind request and timing primitive. This issue is fixed in version 2.37.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-63643</guid>
    </item>
    <item>
      <title>GHSA-w6x9-28jw-hq7j — MagicMirror: ssrf calendar .js</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-w6x9-28jw-hq7j</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: magicmirror&lt;/p&gt;
&lt;p&gt;# Vulnerability — SSRF via `ADD_CALENDAR` (MagicMirror² calendar)&lt;/p&gt;
&lt;p&gt;&amp;gt; Analysis of the PoC `exploit-ssrf-calendar.js`.
&amp;gt; Target: `calendar/node_helper.js` of MagicMirror², socket.io namespace `/calendar`.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Identification&lt;/p&gt;
&lt;p&gt;| Field | Value |
|-------|-------|
| **PoC file** | `exploit-ssrf-calendar.js` |
| **Endpoint** | socket.io namespace `/calendar`, notification `ADD_CALENDAR` |
| **Precondition** | reach the mirror&amp;#39;s HTTP port (no authentication required) |&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `ADD_CALENDAR` handler in `calendar/node_helper.js` performs a **server-side** HTTP request to a URL that is **fully attacker-controlled**, with no SSRF protection whatsoever — unlike the project&amp;#39;s hardened `/cors` endpoint.&lt;/p&gt;
&lt;p&gt;Worse, the attacker also controls:
- the **authentication headers** the server attaches to the request (`auth: { method: &amp;#34;bearer&amp;#34;, pass: &amp;#34;...&amp;#34; }`);
- the `selfSignedCert` flag, which **disables TLS verification** of the server-side request.&lt;/p&gt;
&lt;p&gt;When the target&amp;#39;s response is **valid iCal**, the server parses the events and sends them back to the attacker via `CALENDAR_EVENTS` — turning the SSRF into **full data exfiltration** (response body read). Against non-iCal responses it remains a blind SSRF (the attacker still forces the server-side request, they just don&amp;#39;t see the body).&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Root cause: unauthenticated socket.io channel + permissive CORS&lt;/p&gt;
&lt;p&gt;The socket.io server accepts connections from **any origin** and with **no authentication**:&lt;/p&gt;
&lt;p&gt;```js
const io = new Serve…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: magicmirror&lt;/p&gt;
&lt;p&gt;# Vulnerability — SSRF via `ADD_CALENDAR` (MagicMirror² calendar)&lt;/p&gt;
&lt;p&gt;&amp;gt; Analysis of the PoC `exploit-ssrf-calendar.js`.
&amp;gt; Target: `calendar/node_helper.js` of MagicMirror², socket.io namespace `/calendar`.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Identification&lt;/p&gt;
&lt;p&gt;| Field | Value |
|-------|-------|
| **PoC file** | `exploit-ssrf-calendar.js` |
| **Endpoint** | socket.io namespace `/calendar`, notification `ADD_CALENDAR` |
| **Precondition** | reach the mirror&amp;#39;s HTTP port (no authentication required) |&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `ADD_CALENDAR` handler in `calendar/node_helper.js` performs a **server-side** HTTP request to a URL that is **fully attacker-controlled**, with no SSRF protection whatsoever — unlike the project&amp;#39;s hardened `/cors` endpoint.&lt;/p&gt;
&lt;p&gt;Worse, the attacker also controls:
- the **authentication headers** the server attaches to the request (`auth: { method: &amp;#34;bearer&amp;#34;, pass: &amp;#34;...&amp;#34; }`);
- the `selfSignedCert` flag, which **disables TLS verification** of the server-side request.&lt;/p&gt;
&lt;p&gt;When the target&amp;#39;s response is **valid iCal**, the server parses the events and sends them back to the attacker via `CALENDAR_EVENTS` — turning the SSRF into **full data exfiltration** (response body read). Against non-iCal responses it remains a blind SSRF (the attacker still forces the server-side request, they just don&amp;#39;t see the body).&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Root cause: unauthenticated socket.io channel + permissive CORS&lt;/p&gt;
&lt;p&gt;The socket.io server accepts connections from **any origin** and with **no authentication**:&lt;/p&gt;
&lt;p&gt;```js
const io = new Serve…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-w6x9-28jw-hq7j</guid>
    </item>
  </channel>
</rss>
