CVE-2025-54991: JupyterLab Desktop TCC bypass via dyld environment variable on macOS

CVE-2025-54991 · Severity: medium · CVSS 5.5 · Published 2026-11-06

JupyterLab Desktop is a cross-platform application that runs Jupyter notebooks locally on computers. On macOS, the application had incorrect security settings that allowed an attacker who already has local access to inject malicious code and steal access to protected folders like Documents, Desktop, and Downloads without macOS asking for permission again. The vulnerability requires that the attacker can already run code on the computer and that the user has previously granted JupyterLab permission to access these folders.

Technologies: JupyterLab Desktop. Vendors: JupyterLab.

Quick answers

Is CVE-2025-54991 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-54991 being exploited in the wild.
How severe is CVE-2025-54991?
Medium severity, with a CVSS score of 5.5, published 6 November 2026.
Which products and versions are affected?
JupyterLab Desktop prior to 4.6.2-1.
Is there a fix for CVE-2025-54991?
Yes: fixed in 4.6.2-1. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-54991 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2025-54991?
Check whether you run JupyterLab Desktop at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 4.6.2-1

Technical details

JupyterLab Desktop for macOS declared the com.apple.security.cs.allow-dyld-environment-variables entitlement, permitting arbitrary dynamic library injection via DYLD_INSERT_LIBRARIES despite the hardened runtime. An attacker with local code execution can load a malicious dylib into the JupyterLab process to inherit previously-granted TCC (Transparency, Consent, and Control) permissions for protected file system locations. The attack requires prior local code execution and existing TCC grants to the application; no remote code execution vector exists.

Affected products

  • JupyterLab Desktop prior to 4.6.2-1

Timeline

  • 2026-11-06: disclosed
  • 2026-07-22: patched: v4.6.2-1 released with fix

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.