CVE-2026-111058: Mercury: missing auth allows anonymous kernel RCE
GHSA-rv4m-xm3f-3ccqCRITICALCISA: TRACK*Mercury, a framework that publishes Jupyter notebooks as web apps, ships in its default tokenless configuration with no authorization on the kernel API, so any anonymous network client can create a Jupyter kernel and run arbitrary Python on the host (CVSS 9.8, CWE-862). The package has 3,043 downstream dependents, and the advisory shows a 72-CVE history and an OpenSSF Scorecard of 5.8/10, which points to a project with a weak security track record. Exploitation likelihood is currently modest (EPSS 0.44%, 63rd percentile, not in CISA KEV, no public exploit or Nuclei template), but the attack needs no credentials and is trivial to script, so this status could change quickly once the advisory is widely read. Upgrade to Mercury 3.2.6 immediately, and until then take any Internet-reachable instance offline or put it behind an authenticating reverse proxy or VPN. Review exposed instances for unexpected kernels and unusual outbound connections.
What is the risk?
High to critical for any Mercury deployment reachable from untrusted networks. The flaw is network-exploitable, requires no privileges or user interaction, and gives arbitrary code execution with the privileges of the Mercury process. Current exploitation indicators are low (EPSS 0.00437, no KEV listing, no public exploit, no scanner template), so the near-term risk is driven by ease of exploitation rather than observed attacks. The risk is highest for default tokenless deployments and for instances placed on the Internet to share dashboards. Internal-only deployments still face lateral-movement risk from any compromised host on the network.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Jupyter Notebook | pip | <= 3.2.5 | 3.2.6 |
Do you use Jupyter Notebook? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade mercury to 3.2.6 or later (pip install -U mercury). 2) Until patched, do not expose Mercury to the Internet; restrict access with a VPN, network ACLs, or an authenticating reverse proxy that covers /api/kernels and the websocket endpoints. 3) Enable authentication and avoid tokenless defaults. 4) Run Mercury as an unprivileged user in a container with minimal secrets, egress filtering, and no access to production credentials. 5) Detection: look in web and proxy logs for unauthenticated requests to /api/kernels and websocket connections from unknown sources, list running Jupyter kernels for unexpected ones, and monitor for unusual child processes, outbound connections, or file changes on the host. 6) If an exposed instance was running a vulnerable version, assume compromise and rotate any secrets, tokens, and cloud keys reachable from that host.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-111058?
Mercury, a framework that publishes Jupyter notebooks as web apps, ships in its default tokenless configuration with no authorization on the kernel API, so any anonymous network client can create a Jupyter kernel and run arbitrary Python on the host (CVSS 9.8, CWE-862). The package has 3,043 downstream dependents, and the advisory shows a 72-CVE history and an OpenSSF Scorecard of 5.8/10, which points to a project with a weak security track record. Exploitation likelihood is currently modest (EPSS 0.44%, 63rd percentile, not in CISA KEV, no public exploit or Nuclei template), but the attack needs no credentials and is trivial to script, so this status could change quickly once the advisory is widely read. Upgrade to Mercury 3.2.6 immediately, and until then take any Internet-reachable instance offline or put it behind an authenticating reverse proxy or VPN. Review exposed instances for unexpected kernels and unusual outbound connections.
Is CVE-2026-111058 actively exploited?
No confirmed active exploitation of CVE-2026-111058 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-111058?
1) Upgrade mercury to 3.2.6 or later (pip install -U mercury). 2) Until patched, do not expose Mercury to the Internet; restrict access with a VPN, network ACLs, or an authenticating reverse proxy that covers /api/kernels and the websocket endpoints. 3) Enable authentication and avoid tokenless defaults. 4) Run Mercury as an unprivileged user in a container with minimal secrets, egress filtering, and no access to production credentials. 5) Detection: look in web and proxy logs for unauthenticated requests to /api/kernels and websocket connections from unknown sources, list running Jupyter kernels for unexpected ones, and monitor for unusual child processes, outbound connections, or file changes on the host. 6) If an exposed instance was running a vulnerable version, assume compromise and rotate any secrets, tokens, and cloud keys reachable from that host.
What systems are affected by CVE-2026-111058?
This vulnerability affects the following AI/ML architecture patterns: Notebook-based dashboards, Data science and ML workbenches, Model serving and experimentation environments, ML development pipelines.
What is the CVSS score for CVE-2026-111058?
CVE-2026-111058 has a CVSS v3.1 base score of 9.8 (CRITICAL). The EPSS exploitation probability is 0.52%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0035AI Artifact CollectionAML.T0037Data from Local SystemAML.T0049Exploit Public-Facing ApplicationAML.T0050Command and Scripting InterpreterCompliance Controls Affected
What are the technical details?
Original Advisory
Mercury is a Python framework for sharing Jupyter notebooks as web applications and dashboards. Prior to 3.2.6, default tokenless deployments allow anonymous clients to create Jupyter kernels and send execute_request messages containing arbitrary Python. The endpoint blocklist does not cover /api/kernels, and the websocket wrapper previously tracked idle activity without authorizing executable messages. This issue is fixed in version 3.2.6.
Exploitation Scenario
An attacker scans for Internet-facing Mercury instances, for example by identifying the Mercury web UI. They send an unauthenticated POST to /api/kernels to create a kernel, then open a websocket to that kernel and send an execute_request message containing Python code. The code reads environment variables and cloud credentials, copies model files and datasets, and opens a reverse shell. From the data science host, the attacker moves to the model registry, feature store, or cloud storage, or tampers with the notebooks and models that downstream users and pipelines consume.
Weaknesses (CWE)
CWE-862 — Missing Authorization: The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HReferences
Timeline
Related Vulnerabilities
CVE-2026-7281110.0SiYuan: SQL injection enables cross-notebook DB access
Same package: notebookCVE-2026-6908510.0SiYuan: SQL injection in searchDocs allows DB tampering
Same package: notebookCVE-2026-6908410.0SiYuan: SQL injection in search endpoint exposes notebooks
Same package: notebookCVE-2026-6908310.0SiYuan: unauthenticated SQLi in full-text search endpoint
Same package: notebookCVE-2026-11105710.0Mercury: regex blocklist bypass allows unauthenticated RCE
Same package: notebook