Skip to content

JupyterLab Desktop on macOS: local attacker could run arbitrary code in app context to bypass macOS privacy controls (TCC)

Moderate
krassowski published GHSA-5c3f-5gj7-p9xh Jul 24, 2026

Package

jupyterlab-desktop

Affected versions

<= v4.2.5-1 (macOS)

Patched versions

v4.6.2-1

Description

Summary

On macOS, JupyterLab Desktop up to and including v4.2.5-1 could be used by a local attacker who is already able to execute code as the current user to bypass macOS Transparency, Consent, and Control (TCC) protections.

The application shipped with Electron Node.js fuses configured to allow execution in Node.js mode via the ELECTRON_RUN_AS_NODE environment variable. As a result, arbitrary Node.js code could be executed within JupyterLab Desktop's process and inherit any TCC permissions previously granted to the application, such as access to the user's Documents, Desktop, or Downloads folders.

This issue affects macOS only.

Impact

This vulnerability does not allow remote code execution and does not provide an attacker with initial access to a system.

To exploit this issue, an attacker must already be able to execute code locally as the affected user. If JupyterLab Desktop has previously been granted access to TCC-protected resources, the attacker may be able to execute code within JupyterLab Desktop's trusted context and access those protected resources without triggering additional macOS permission prompts.

Users are primarily affected if all of the following conditions are true:

  • they are using JupyterLab Desktop on macOS;
  • JupyterLab Desktop has been granted access to TCC-protected resources (for example Documents, Desktop, or Downloads); and
  • an attacker is already able to execute code as that user.

This vulnerability is most relevant in post-compromise scenarios, where an attacker attempts to expand access to data protected by macOS privacy controls.

Workarounds

There are no complete workarounds.

Users who cannot immediately upgrade may reduce exposure by revoking JupyterLab Desktop's access to protected folders in macOS Privacy & Security settings, although upgrading is the recommended mitigation.

References

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Local
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

CVE ID

CVE-2025-55002

Weaknesses

Improper Control of Generation of Code ('Code Injection')

The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment. Learn more on MITRE.

Execution with Unnecessary Privileges

The product performs an operation at a privilege level that is higher than the minimum level required, which creates new weaknesses or amplifies the consequences of other weaknesses. Learn more on MITRE.

Protection Mechanism Failure

The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product. Learn more on MITRE.

Credits