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
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_NODEenvironment 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:
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