Advisories for Npm/Magicmirror package

2026

MagicMirror: ssrf calendar .js

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's hardened /cors endpoint. Worse, the attacker also controls: the authentication headers the server attaches to the request (auth: { method: "bearer", pass: "…" }); the selfSignedCert flag, which disables TLS verification of the server-side request. When the target's response is valid iCal, the server …

MagicMirror Socket.IO module namespaces bypass configured IP whitelist and allow unauthenticated server-side actions

MagicMirror applies ipWhitelist only as Express middleware, but the Socket.IO server is attached directly to the HTTP server without equivalent IP allowlist, origin, or namespace authentication checks. In a documented common deployment where MagicMirror listens on a non-loopback interface but expects ipWhitelist to restrict access, an untrusted network client can connect directly to module Socket.IO namespaces and send arbitrary module-helper notifications. This allows unauthenticated server-side requests through default modules and …

MagicMirror socket payload secret placeholder expansion can disclose SECRET_* environment variables

When hideConfigSecrets: true is enabled, MagicMirror redacts SECRET_* environment placeholders in the HTTP /config response, but the shared node-helper socket dispatcher expands SECRET_NAME placeholders in every inbound socket payload before passing it to module helpers. Any client that can connect to a loaded module namespace can send a placeholder such as SECRET_API_KEY and cause the server to substitute the real environment variable into the helper payload. Helpers that echo attacker-controlled …

MagicMirror newsfeed Socket.IO notification allows blind server-side request forgery

The checkArticleUrl() function in newsfeed/node_helper.js runs fetch(url, { method: "HEAD" }) with zero validation of the URL and returns ARTICLE_URL_STATUS { url, canFrame }. This gives the attacker a boolean + timing oracle to map internal hosts and ports: presence, absence, and response time reveal which internal services are alive. It is a "blind-ish" SSRF — the attacker doesn't see the body, but forces the server-side request and observes the …

MagicMirror vulnerable to unauthenticated SSRF via /cors endpoint

An unauthenticated Server-Side Request Forgery (SSRF) vulnerability in the /cors endpoint allows any remote attacker to force the MagicMirror² server to perform arbitrary HTTP requests to internal networks, cloud metadata services, and localhost services. The endpoint also expands environment variable placeholders (VAR_NAME), enabling exfiltration of server-side secrets.