Repository navigation
chore(deps): update dependency marimo [security] - #155
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 15, 2026 14:02
1c65b54 to
7beba5b
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 16, 2026 16:51
7beba5b to
b6a8cd0
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 19, 2026 12:42
b6a8cd0 to
92a9dc4
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 19, 2026 21:51
92a9dc4 to
89157b8
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 21, 2026 20:09
89157b8 to
1b75e66
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 21, 2026 23:32
1b75e66 to
a6e4045
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 23, 2026 14:36
a6e4045 to
dc3b16f
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 23, 2026 19:51
dc3b16f to
2ee2688
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
3 times, most recently
from
April 29, 2026 14:40
1f90162 to
b1db5a5
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 29, 2026 22:08
b1db5a5 to
bd3e8da
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 30, 2026 17:00
bd3e8da to
35c4452
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
April 30, 2026 22:53
35c4452 to
36aaa06
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
May 18, 2026 18:16
3f2d51b to
9993c4f
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
May 22, 2026 20:42
9993c4f to
7103775
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
May 23, 2026 02:29
7103775 to
d5bc079
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
May 28, 2026 18:33
d5bc079 to
d196089
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
May 28, 2026 22:50
d196089 to
f435040
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 1, 2026 19:35
f435040 to
ae70632
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 2, 2026 00:41
ae70632 to
94e055c
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 11, 2026 14:51
94e055c to
697147b
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 12, 2026 00:28
697147b to
ef21641
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 18, 2026 19:54
ef21641 to
293f640
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 19, 2026 01:42
293f640 to
7735140
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
June 20, 2026 18:12
7735140 to
de05428
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
July 12, 2026 10:44
de05428 to
ea83d04
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
July 12, 2026 16:13
ea83d04 to
b499109
Compare
renovate
Bot
force-pushed
the
renovate/pypi-marimo-vulnerability
branch
from
July 16, 2026 19:55
b499109 to
fa7f63f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
>0.14,<0.15→>0.25,<0.26==0.14.17→==0.23.9marimo vulnerable to proxy abuse of /mpl/{port}/
GHSA-xjv7-6w92-42r7
More information
Details
Summary
The
/mpl/<port>/<route>endpoint, which is accessible without authentication on default Marimo installations allows for external attackers to reach internal services and arbitrary ports.Details
From our understanding, this route is used internally to provide access to interactive matplotlib visualizations.
marimo/marimo/_server/main.py at main · marimo-team/marimo
This endpoint functions as an unauthenticated proxy, allowing an attacker to connect to any service running on the local machine via the specified
<port>and<route>.The existence of this proxy is visible in the application's code (marimo/_server/main.py), but there's no official documentation or warning about its behavior or potential risks.
Impact
CWE-441: Proxying Without Authentication
This vulnerability, as it can be used to bypass firewalls and access internal services that are intended to be local-only. The level of impact depends entirely on what services are running and accessible on the local machine.
Full Local Access: An attacker can use this proxy to connect to local services that answer to web sockets, HTTP or ASGI protocol, effectively gaining a foothold on the machine. Depending on the service, this can lead to remote code execution, data exfiltration, or further network penetration.
Exposure of Sensitive Services: Our scans of public-facing Marimo servers have shown that many are exposing sensitive internal services, including:
Old CUPS Servers: Could allow an attacker to view print jobs or configuration or depending on old vulnerabilities, allow RCE.
phpMyAdmin: Provides a web interface to a MySQL database, potentially exposing sensitive data.
RPCMapper: Can be used for network reconnaissance and enumerating services.
While you’d hope people wouldn’t expose marimo instances to the internet, we found numerous public Marimo instances using tools like Shodan. Many of these servers, some even hosted on cloud platforms like AWS GovCloud, were found to be vulnerable. This means the vulnerability isn't limited to a few isolated cases but is a widespread issue affecting production environments.
===
Notes, this was discovered by devgi. I (acepace) followed up and also created this report.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Marimo: Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass
CVE-2026-39987 / GHSA-2679-6mx9-h9xc
More information
Details
Summary
Marimo (19.6k stars) has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint
/terminal/wslacks authentication validation, allowing an unauthenticated attacker to obtain a full PTY shell and execute arbitrary system commands.Unlike other WebSocket endpoints (e.g.,
/ws) that correctly callvalidate_auth()for authentication, the/terminal/wsendpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification.Affected Versions
Marimo <= 0.20.4
Vulnerability Details
Root Cause: Terminal WebSocket Missing Authentication
marimo/_server/api/endpoints/terminal.pylines 340-356:Compare with the correctly implemented
/wsendpoint (ws_endpoint.pylines 67-82):Authentication Middleware Limitation
Marimo uses Starlette's
AuthenticationMiddleware, which marks failed auth connections asUnauthenticatedUserbut does NOT actively reject WebSocket connections. Actual auth enforcement relies on endpoint-level@requires()decorators orvalidate_auth()calls.The
/terminal/wsendpoint has neither a@requires("edit")decorator nor avalidate_auth()call, so unauthenticated WebSocket connections are accepted even when the auth middleware is active.Attack Chain
ws://TARGET:2718/terminal/ws(no auth needed)websocket.accept()accepts the connection directlypty.fork()creates a PTY child processA single WebSocket connection yields a complete interactive shell.
Proof of Concept
Reproduction Environment
Reproduction Result
With auth enabled (server generates random
access_token), the exploit bypasses authentication entirely:Suggested Remediation
/terminal/wsendpoint, consistent with/wsusingWebSocketConnectionValidator.validate_auth()Impact
An unauthenticated attacker can obtain a full interactive root shell on the server via a single WebSocket connection. No user interaction or authentication token is required, even when authentication is enabled on the marimo instance.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
marimo contains a reflected cross-site scripting vulnerability in the notebook page
CVE-2026-54386 / GHSA-8m59-7xv8-735h
More information
Details
marimo before 0.23.9 contains a reflected cross-site scripting vulnerability in the notebook page that allows unauthenticated attackers to inject arbitrary JavaScript by exploiting improper escaping of single quotes in the file query parameter reflected into an inline JavaScript string literal. Attackers can craft a malicious link with a payload beginning with new to bypass the 404 check and inject JavaScript into the page, which executes without Content-Security-Policy restrictions in the origin of a victim's marimo server.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
marimo-team/marimo (marimo)
v0.25.1Compare Source
✨ Enhancements
expand_outputsas an argument toctx.edit_cellandctx.create_cell(#10974)cache size(#10837)cache dir(#10836)🐛 Bug fixes
📚 Documentation
📝 Other changes
f15c5ff)Contributors
Thanks to all our community and contributors who made this release possible: @dmadisetti, @kirangadhave, @koaning, @Light2Dark, @manzt, @marthacryan, @mscolnick, @peter-gy, @sadov, @ZainnQureshii
Full Changelog: marimo-team/marimo@0.25.0...0.25.1
v0.25.0Compare Source
This release reworks sandboxing to improve correctness, recovery, and consistency, and adds Pixi as a new sandbox backend.
We expect most users to be able to upgrade without making changes. Existing sandbox commands continue to work, but the underlying environment lifecycle has changed substantially and could affect some workflows.
This release also adds portable WebAssembly exports, persistent expanded outputs, and many fixes across the editor and runtime.
⭐️ Highlights
Pixi-powered notebook sandboxes
marimo sandboxes now support Pixi, bringing Conda packages, native libraries, and non-Python runtimes into notebook environments.
uv remains the default; use
--sandbox=pixito opt in.Pixi-backed notebooks can combine packages from PyPI and Conda in the notebook’s inline configuration:
For example, this configuration carries everything needed to use R from Python. Learn more about Pixi sandboxes.
A revamped sandbox lifecycle
As part of the new sandbox architecture, the marimo editor now starts separately from notebook kernels. Sandboxed notebooks open faster because the editor no longer waits for uv or Pixi to prepare the environment and start the kernel.
The Packages panel shows that work as it happens. If setup fails, you can now edit the notebook manifest and retry without restarting marimo.
Read the sandbox guide to learn more.
Keep cell outputs expanded
One of our most-requested features is here: expanded cell outputs can now be saved as part of the notebook.
When you select Expand Cell Output, marimo records the preference on the cell:
The output remains expanded when you reopen or share the notebook. Selecting Clamp Cell Output restores the default behavior.
This was also one of the first contributions from our newest team member, @marthacryan!
Portable WebAssembly exports
Interactive WebAssembly notebooks can now be exported as a single HTML file that opens directly in a browser, or as a self-contained bundle for serving without an internet connection:
Read the WebAssembly export guide.
✨ Enhancements
expand_outputcell decorator (#10911)🐛 Bug fixes
%envvalues in ipynb conversion (#10904)webbrowser(#10887)image_compare(#10907)data-tooltipattributes (#10851)📚 Documentation
.envresolution when there is nopyproject.toml(#10583)🔬 Preview features
📝 Other changes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @atul2387, @boydgreenfield, @Chinmayrawat15, @cspipaon, @dangooddd, @DevPranjal, @dmadisetti, @julio4, @kirangadhave, @koaning, @Light2Dark, @manzt, @marthacryan, @mscolnick, @NoiceHax, @Oscar-Williams, @peter-gy, @phobson, @SergeyAxiomatic
And especially to our new contributors:
Full Changelog: marimo-team/marimo@0.24.2...0.25.0
v0.24.2Compare Source
What's Changed
✨ Enhancements
🐛 Bug fixes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @kirangadhave, @Light2Dark, @mscolnick
Full Changelog: marimo-team/marimo@0.24.1...TODO_CURRENT_VERSION
v0.24.1Compare Source
What's Changed
This release makes it easier to share slide decks, browse files across directories and GitHub repositories, in addition to many other bug fixes. Some other changes include better geospatial data support with GeoPandas, polars and duckdb, web assembly optimizations, and a condensed graph view to understand your notebook's dependencies.
⭐️ Highlights
Export slides to HTML and WebAssembly
Share notebooks in the slides layout as reveal.js decks, preserving slide structure, fragments, and deck settings. Export static HTML with captured outputs, or use WebAssembly to keep Python controls interactive in the browser.
Read the docs for static HTML, or learn about interactive WebAssembly exports.
Browse local folders and GitHub repositories
Keep project files, data directories, and GitHub repositories within reach in the Files panel. Add named local directories in
pyproject.toml, or use Add Connection to connect a GitHub repository and browse its files.Read the docs for additional local folders, or learn about remote storage connections.
A compact view of notebook dependencies
The dependency graph now shows compact variable summaries, making it easier to follow connections in larger notebooks. Double-click a cell in the graph to expand its code.
Read the docs.
✨ Enhancements
mo.latexto accept text directly (#10723)78f0366)allow_provider_configis false (#10590,3524643)ba0219a)205fa16)3a1b1da)mo.ui.matrix(#10520,5c3646a)df8dbed)09c2c30)397fae2)🐛 Bug fixes
geoarrowimports togeoarrow-types(#10659)srcdoc(#10668)maceimports tomace-torch(#10594)mo.ui.date_rangevalue (#10649)Path.__deepcopy__recursion (#10702)mo.ui.dictionaryand.batch(#10653)containsoperator (#10617)mo.ui.file_browser(#10613)69e0067)b4181ab)c3717b7)55e2a22)eb9960f)666e922)9131759)f1b3678)📚 Documentation
sql_parse_errorlint rule (#10757)mo.videoexample (#10731)📝 Other changes
0a80490)257ea7a)96a4942)cad0f45)3dbe26f)eece28b)4e4efcc)e878ff7)849f16b)ea3be97)c092a67)experimental.cachetocache.storeand add signing fields (#10523,7ff2b4d)Contributors
Thanks to all our community and contributors who made this release possible: @Abdulrehman-PIAIC80387, @abelsiqueira, @afonsojanu, @akshayka, @alchem0x2A, @Aniket-a14, @dmadisetti, @Jacky-J126, @kirangadhave, @kjgoodrick, @koaning, @ktaletsk, @Light2Dark, @manzt, @matemijolovic, @mscolnick, @Nikhil-Koganti, @peter-gy, @pylrn, @robd518, @sha2fiddy, @winklemad
And especially to our new contributors:
Full Changelog: marimo-team/marimo@0.24.0...0.24.1
v0.24.0Compare Source
What's Changed
This release improves the user experience for working with data sources in the marimo editor. It also makes a small breaking change to
mo.ui.file_browser, restricting navigation outside the target directory by default withrestrict_navigation=True. Like all our releases, it includes many other enhancements and bug fixes.🤗 Hugging Face Hub integration
Hugging Face Hub is now a first-class remote storage backend. Hugging Face Hub (huggingface_hub.HfApi) usage is automatically detected, with your HuggingFace data appearing in the storage sidebar.
Read the docs to learn more.
🛢️ Preview variables bound to data sources
Variables bound to data sources and remote storage backends are now decorated with small icons indicating the connection. Hover over the icon to see details about the connection, or click it to open the relevant section in the data sources sidebar panel.
📥 A unified export dialog
The marimo editor now includes a simple, unified, and customizable export dialog, allowing you to export notebooks to various formats and customize the options for each export type.
export-dialog-demo.mp4
🤖 AI capabilities in the chat sidebar
Give your AI access to capabilities like web search directly from the siderbar:
Screen.Recording.2026-08-10.at.5.14.09.PM.mov
All changes
✨ Enhancements
uv_buildto<=0.13.0(#10467)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.