Skip to main content

MagicMirror² EUVDEUVD-2026-61079

| CVE-2026-63640 MEDIUM
Information Exposure (CWE-200)
2026-08-18 GitHub_M GHSA-q4gh-4ffp-5cg8
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain LAN or port-forwarded access to MagicMirror Socket.IO
  2. Delivery
    Connect to weather module namespace
  3. Exploit
    Emit INIT_WEATHER with SECRET_* placeholder as instanceId
  4. Execution
    Server expands placeholder to live credential
  5. Impact
    WEATHER_ERROR echoes expanded secret back to attacker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires: (1) hideConfigSecrets must be set to true in the MagicMirror configuration - this is the feature that establishes the SECRET_* variable naming convention the attacker exploits; (2) the attacker must have Socket.IO connectivity to the MagicMirror server, which by default listens on the local network (AV:A); (3) at least one module namespace must be loaded that echoes attacker-controlled payload fields - the default weather module provides a confirmed echo path via INIT_WEATHER/WEATHER_ERROR, but other custom modules may also qualify. No authentication is required (PR:N per CVSS). Exploitation is limited by the adjacent-network constraint - the attacker must reach the Socket.IO port, typically TCP 8080, from the same subnet or via a forwarded port. The cors: allowAll configuration paradoxically blocks exploitation in the unpatched code because that branch skips secret expansion, but it introduces separate security concerns.

Impact

The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:L) scores 4.3, reflecting adjacent-network access without authentication - consistent with MagicMirror's typical LAN/home-network deployment model. While the CVSS score is moderate, the actual data sensitivity is higher than the C:L metric implies: SECRET_* variables are explicitly API tokens and service credentials, not generic low-value data. EPSS and KEV data are not provided in the intelligence feed; no confirmed active exploitation is noted. POC availability is not confirmed, though the GHSA advisory provides sufficient technical detail for a skilled attacker to construct a working exploit. The adjacent-network (AV:A) constraint meaningfully reduces internet-scale risk - exploitation requires a client already connected to the same local network or WebSocket endpoint. However, MagicMirror instances occasionally expose their Socket.IO interface beyond the local subnet when misconfigured or port-forwarded, which elevates practical risk in those deployments. The fix in 2.37.0 introduces a principled allow-list approach - per-module secret permissions derived from the redacted config - rather than blocking expansion wholesale, which is the correct architectural fix. Overall this is a genuine credential-disclosure risk worth patching promptly, but not an emergency requiring immediate compensating controls for air-gapped home deployments.

Exploit ScenarioDerived

An attacker on the same LAN as a MagicMirror instance connects to the Socket.IO weather module namespace and emits an INIT_WEATHER event with a payload where instanceId is set to SECRET_OPENWEATHERMAP_API_KEY (or any known SECRET_* variable name). The server-side dispatcher expands the placeholder before passing the payload to the weather helper, which copies the expanded instanceId and returns it in a WEATHER_ERROR notification - delivering the live API key directly to the attacker's socket listener. No authentication is required for this interaction.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 18, 2026

Secret environment variable disclosure in MagicMirror² before 2.37.0 allows adjacent network attackers to recover live SECRET_* credential values by exploiting a logic inversion in the socket dispatcher. The hideConfigSecrets feature is intended to redact environment secrets from browser-facing config responses, but the node_helper socket catch-all unconditionally expands SECRET_NAME placeholders in every inbound payload before routing to module helpers. Any unauthenticated client connected to a module namespace (such as the default weather helper) can submit a crafted INIT_WEATHER payload embedding a secret placeholder and receive the expanded real secret value echoed back in the WEATHER_ERROR response. No public exploit has been identified at time of analysis, and a vendor-released patch is available as of version 2.37.0.

RemediationAI

Upgrade MagicMirror² to version 2.37.0 or later, which is the vendor-released patch available at https://github.com/MagicMirrorOrg/MagicMirror/releases/tag/v2.37.0. The fix restricts secret expansion in the socket dispatcher to only the specific SECRET_* names that appear in a given module's own redacted config, eliminating the arbitrary expansion oracle. The patched replaceSecretPlaceholder() function accepts an allowedSecrets Set and leaves any non-permitted placeholder untouched. If immediate upgrade is not possible, a meaningful compensating control is to restrict Socket.IO access to localhost only (bind the server to 127.0.0.1 and avoid exposing port 8080 externally), which removes the adjacent-network attack surface; however, this may break legitimate remote dashboard use cases. Setting cors to allowAll is explicitly contraindicated - the original code skipped secret expansion under that setting, but it removes other protections. The patch commit is at https://github.com/MagicMirrorOrg/MagicMirror/commit/ca7b752025962441196e148f8c1bc04b90117979.

Affected VersionsENISA

MagicMirror < 2.37.0

Affected Packages

npm magicmirror fix: 2.37.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

MagicMirror² (npm package: magicmirror, CPE cpe:2.3:a:magicmirrororg:magicmirror:*:*:*:*:*:*:*:*) is a Node.js smart-mirror platform using Socket.IO namespaces for browser-to-server module communication. The root cause is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) arising from a trust-boundary inversion. The server-side replaceSecretPlaceholder() function in js/server_functions.js was designed for outbound config redaction but was mistakenly applied to inbound socket payloads in js/node_helper.js (lines 91-99), effectively creating a bidirectional oracle. The SECRET_NAME syntax used by the redaction system also functions as an expansion trigger, meaning any payload containing that pattern is treated as a legitimate request for secret substitution. The default weather module's node_helper amplifies this by accepting attacker-controlled instanceId values via INIT_WEATHER and reflecting them back in WEATHER_ERROR, providing a reliable echo channel.

Know when Magicmirror gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 4.3 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Adjacent network access without authentication suffices; only confidentiality is impacted as secrets are read but no writes or availability effects occur.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Aug 18, 2026 - 18:03 EUVD

DescriptionCVE.org

MagicMirror² is an open source modular smart mirror platform. Prior to 2.37.0, when hideConfigSecrets is enabled, the catch-all socket dispatcher in js/node_helper.js passes every inbound object payload through replaceSecretPlaceholder in js/server_functions.js before invoking socketNotificationReceived. A client connected to a loaded module namespace can submit a SECRET_API_KEY placeholder, causing the server to replace it with the corresponding process environment value. The default weather helper accepts INIT_WEATHER, copies the attacker-controlled instanceId, and returns it in WEATHER_ERROR, providing an echo path for the expanded secret. This reverses the intended one-way redaction boundary and can disclose API tokens, credentials, or service keys stored in SECRET_ variables. This issue is fixed in version 2.37.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Low
niche DIY smart-mirror platform, primarily hobbyist deployments
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy