Description
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.
Published: 2026-08-18
Score: 4.3 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A bug in MagicMirror² allows a client connected to a loaded module namespace to submit a placeholder for a secret key, such as SECRET_API_KEY. When the server processes the inbound socket payload, it expands the placeholder using the process environment, and an echo path is provided via the weather helper’s error response. This effectively reverses the intended one‑way redaction boundary, revealing API tokens, credentials, or service keys that are stored in SECRET_ environment variables. The vulnerability results in the unintended disclosure of configuration secrets to an attacker who can influence or observe socket traffic.

Affected Systems

MagicMirror by MagicMirrorOrg is affected. The flaw exists in any installation of MagicMirror that uses a version prior to 2.37.0 where the setting hideConfigSecrets is enabled. Version 2.37.0 and later contain the fix and are not impacted.

Risk and Exploitability

The CVSS score of 4.3 indicates moderate severity. EPSS is not available, so current exploitation probability cannot be quantified. The vulnerability is not listed in the CISA KEV catalog. Attackers would need to be able to send crafted socket notifications to a module’s namespace, which can be achieved if the module is reachable from an external network or an untrusted internal client. Once the placeholder is submitted, the server expands it and returns the secret in a response, allowing the attacker to read the environment variable value. The exploit does not require privileged access on the host, but requires network or local access to the MagicMirror instance.

Generated by OpenCVE AI on August 18, 2026 at 18:26 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade MagicMirror to version 2.37.0 or newer, which removes the placeholder expansion path.
  • If an immediate upgrade is not possible, disable the hideConfigSecrets setting to prevent the expansion of SECRET_* placeholders and reduce the risk until a patch can be applied.
  • Monitor socket traffic and API key usage for unexpected disclosures and apply runtime configuration hardening such as restricting module permissions and denying external clients from sending arbitrary socket notifications.

Generated by OpenCVE AI on August 18, 2026 at 18:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-q4gh-4ffp-5cg8 MagicMirror socket payload secret placeholder expansion can disclose SECRET_* environment variables
History

Tue, 18 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 18 Aug 2026 17:45:00 +0000

Type Values Removed Values Added
Description 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.
Title MagicMirror socket payload secret placeholder expansion can disclose SECRET_* environment variables
Weaknesses CWE-200
References
Metrics cvssV3_1

{'score': 4.3, 'vector': 'CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-18T17:56:32.044Z

Reserved: 2026-07-17T14:11:15.483Z

Link: CVE-2026-63640

cve-icon Vulnrichment

Updated: 2026-08-18T17:56:10.315Z

cve-icon NVD

Status : Received

Published: 2026-08-18T18:19:11.800

Modified: 2026-08-18T18:19:11.800

Link: CVE-2026-63640

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T18:30:16Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor