CVE-2025-55002: JupyterLab Desktop: RunAsNode fuse enables macOS TCC bypass
MEDIUMJupyterLab Desktop for macOS before 4.6.2-1 shipped with Electron's RunAsNode fuse enabled. Any process already running as the current user can set ELECTRON_RUN_AS_NODE and execute arbitrary Node.js code inside the app, inheriting the macOS privacy (TCC) permissions the user previously granted to it, such as access to Documents, Desktop and Downloads. This is a post-compromise privilege-boundary issue, not an initial access or remote vector. It is rated medium (CVSS 5.5, local, low privileges, no user interaction). It is not in CISA KEV, no public exploit or Nuclei template is known, and no EPSS data is available. The risk is concentrated on data scientist and ML engineer Macs, where notebooks often sit next to datasets, credentials and model artifacts. Upgrade JupyterLab Desktop to 4.6.2-1 or later on all macOS endpoints and review which folders the app has TCC grants for.
What is the risk?
Low to medium. Exploitation requires existing local code execution as the user plus previously granted TCC permissions, so it works as a post-compromise step that widens data access, not as an entry point. Attack complexity is low once a foothold exists. The CVSS vector rates confidentiality impact as high and integrity and availability as none. No KEV listing, public exploit or scanner template is known, and EPSS is unavailable, so near-term mass exploitation is unlikely. Windows and Linux are not affected.
How does the attack unfold?
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade JupyterLab Desktop to 4.6.2-1 or later on all macOS systems, and inventory installed versions via MDM or EDR. 2) Audit TCC grants (System Settings > Privacy & Security) and revoke unnecessary Documents, Desktop and Downloads access for JupyterLab Desktop. 3) Detect execution of the JupyterLab Desktop binary with ELECTRON_RUN_AS_NODE in the environment or unusual Node.js child process activity, using EDR or Endpoint Security telemetry. 4) Keep sensitive datasets and credentials out of broadly TCC-granted folders. 5) Apply standard hygiene to untrusted notebooks and packages to reduce the chance of the initial foothold.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2025-55002?
JupyterLab Desktop for macOS before 4.6.2-1 shipped with Electron's RunAsNode fuse enabled. Any process already running as the current user can set ELECTRON_RUN_AS_NODE and execute arbitrary Node.js code inside the app, inheriting the macOS privacy (TCC) permissions the user previously granted to it, such as access to Documents, Desktop and Downloads. This is a post-compromise privilege-boundary issue, not an initial access or remote vector. It is rated medium (CVSS 5.5, local, low privileges, no user interaction). It is not in CISA KEV, no public exploit or Nuclei template is known, and no EPSS data is available. The risk is concentrated on data scientist and ML engineer Macs, where notebooks often sit next to datasets, credentials and model artifacts. Upgrade JupyterLab Desktop to 4.6.2-1 or later on all macOS endpoints and review which folders the app has TCC grants for.
Is CVE-2025-55002 actively exploited?
No confirmed active exploitation of CVE-2025-55002 has been reported, but organizations should still patch proactively.
How to fix CVE-2025-55002?
1) Upgrade JupyterLab Desktop to 4.6.2-1 or later on all macOS systems, and inventory installed versions via MDM or EDR. 2) Audit TCC grants (System Settings > Privacy & Security) and revoke unnecessary Documents, Desktop and Downloads access for JupyterLab Desktop. 3) Detect execution of the JupyterLab Desktop binary with ELECTRON_RUN_AS_NODE in the environment or unusual Node.js child process activity, using EDR or Endpoint Security telemetry. 4) Keep sensitive datasets and credentials out of broadly TCC-granted folders. 5) Apply standard hygiene to untrusted notebooks and packages to reduce the chance of the initial foothold.
What systems are affected by CVE-2025-55002?
This vulnerability affects the following AI/ML architecture patterns: Developer and data science workstations, Notebook-based ML development environments, Local model experimentation.
What is the CVSS score for CVE-2025-55002?
CVE-2025-55002 has a CVSS v3.1 base score of 5.5 (MEDIUM).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0037Data from Local SystemAML.T0050Command and Scripting InterpreterAML.T0107Exploitation for Defense EvasionCompliance Controls Affected
What are the technical details?
Original Advisory
JupyterLab Desktop is the cross-platform desktop application for JupyterLab. Prior to 4.6.2-1, JupyterLab Desktop for macOS shipped with Electron's RunAsNode fuse enabled, allowing ELECTRON_RUN_AS_NODE to execute arbitrary Node.js code in the application process. An attacker who can already execute code as the current user can therefore run code in JupyterLab Desktop's context and inherit TCC permissions previously granted to the application, including access to protected Documents, Desktop, or Downloads folders without another macOS prompt. Exploitation requires existing local code execution and prior TCC grants; it does not provide initial or remote code execution. Windows and Linux are not affected. This vulnerability is fixed in 4.6.2-1.
Exploitation Scenario
An attacker first obtains user-level code execution on a data scientist's Mac, for example through a malicious pip package or a trojanized notebook dependency. The malware finds that JupyterLab Desktop already holds TCC grants for Documents and Downloads. It launches the app binary with ELECTRON_RUN_AS_NODE=1 and a script that reads and exfiltrates training datasets, notebooks, exported model files and stored API keys. macOS shows no new consent prompt, because the access is attributed to the trusted application.
Weaknesses (CWE)
CWE-250Execution with Unnecessary PrivilegesPrimaryCWE-693Protection Mechanism FailurePrimaryCWE-94Improper Control of Generation of CodePrimaryCWE-250Execution with Unnecessary PrivilegesCWE-693Protection Mechanism FailureCWE-94Improper Control of Generation of CodeCWE-250 — 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.
- [Architecture and Design, Operation] Run your code using the lowest privileges that are required to accomplish the necessary tasks [REF-76]. If possible, create isolated accounts with limited privileges that are only used for a single task. That way, a successful attack will not immediately give the attacker access to the rest of the software or its environment. For example, database applications rarely need to run as the database administrator, especially in day-to-day operations.
- [Architecture and Design] Identify the functionality that requires additional privileges, such as access to privileged operating system resources. Wrap and centralize this functionality if possible, and isolate the privileged code as much as possible from other code [REF-76]. Raise privileges as late as possible, and drop them as soon as possible to avoid CWE-271. Avoid weaknesses such as CWE-288 and CWE-420 by protecting all possible communication channels that could interact with the privileged code, such as a secondary socket that is only intended to be accessed by administrators.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NReferences
Timeline
Related Vulnerabilities
CVE-2025-5952810.0Flowise: Unauthenticated RCE via MCP config injection
Same attack type: Code ExecutionCVE-2024-291210.0BentoML: RCE via insecure deserialization (CVSS 10)
Same attack type: Code ExecutionCVE-2023-376510.0MLflow: path traversal allows arbitrary file read
Same attack type: Data LeakageCVE-2025-512010.0smolagents: sandbox escape enables unauthenticated RCE
Same attack type: Data LeakageCVE-2026-2185810.0n8n: Input Validation flaw enables exploitation
Same attack type: Code Execution