chore(deps): update dependency marimo to v0.23.9 [security]#155
Open
renovate[bot] wants to merge 1 commit into
Open
chore(deps): update dependency marimo to v0.23.9 [security]#155renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
1c65b54 to
7beba5b
Compare
7beba5b to
b6a8cd0
Compare
b6a8cd0 to
92a9dc4
Compare
92a9dc4 to
89157b8
Compare
89157b8 to
1b75e66
Compare
1b75e66 to
a6e4045
Compare
a6e4045 to
dc3b16f
Compare
dc3b16f to
2ee2688
Compare
1f90162 to
b1db5a5
Compare
b1db5a5 to
bd3e8da
Compare
bd3e8da to
35c4452
Compare
35c4452 to
36aaa06
Compare
61fae99 to
a5b60ca
Compare
a5b60ca to
3f2d51b
Compare
3f2d51b to
9993c4f
Compare
9993c4f to
7103775
Compare
7103775 to
d5bc079
Compare
d5bc079 to
d196089
Compare
d196089 to
f435040
Compare
f435040 to
ae70632
Compare
ae70632 to
94e055c
Compare
94e055c to
697147b
Compare
697147b to
ef21641
Compare
ef21641 to
293f640
Compare
293f640 to
7735140
Compare
7735140 to
de05428
Compare
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.
This PR contains the following updates:
>0.14,<0.15→>0.14,<0.24==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.23.9Compare Source
What's Changed
This release makes opening a notebook in a second tab non-destructive,
mo.ui.tableadds new args forhidden_columns/visible_columns(mutually exclusive), and tightens sharing and error-output behavior across the board.⭐️ Highlights
Open the same notebook in a second tab
Opening a notebook in a second browser tab no longer forcibly disconnects the first. The new tab joins as a live, read-only viewer, and you can take over editing from either side with a single click — no destructive modal and no reload required (#9746).
Screen.Recording.2026-06-01.at.3.31.17.PM.mov
Show and hide table columns
mo.ui.tablenow supports column visibility. Hide and show columns from the column header menu, Column Explorer with a click, find columns fast with smart prefix-based search, and control initial visibility from Python. A hidden-count and "Unhide all" link keep things discoverable (#9687, #9696).Screen.Recording.2026-05-26.at.6.35.04.PM.mov
Cells with no output now show in slides
Because slides allow code edits, a slide edited to no longer produce an output used to disappear from the deck entirely. Such cells now appear in the slides minimap and viewer so you can edit them back in (they're still skipped during a presentation). Minimap thumbnails are also larger and more readable (#9771).
Screen.Recording.2026-06-03.at.2.25.46.PM.mov
✨ Enhancements
🐛 Bug fixes
📚 Documentation
📝 Other changes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @corleyma, @dmadisetti, @everettroeth, @foxcroftjn, @GHX5T-SOL, @kirangadhave, @kjgoodrick, @kratos0718, @Light2Dark, @mscolnick, @nojaf, @Rowlando13, @VishakBaddur, @XanthanGum
And especially to our new contributors:
Full Changelog: marimo-team/marimo@0.23.8...0.23.9
v0.23.8Compare Source
v0.23.7Compare Source
What's Changed
This release brings major upgrades to table filtering, adds speaker notes to slide view, and lets WASM notebooks query remote files with DuckDB.
⭐ Highlights
Powerful new table column filters
Table columns now support the full operator set across every dtype. Text columns get
contains,starts_with,ends_with,equals,regex,is_empty, and more, with a slash-bracketedregexinput and a creatable values picker forin/not_in. Number columns get nativebetween, and the new date/datetime/time filter UI brings the same operator coverage to date-like columns with smart clipboard paste for ISO/US/RFC dates andA - Branges (#9597, #9615).Screen.Recording.2026-05-18.at.7.54.06.PM.mov
Speaker notes for slides
Press
Sin slide view to open speaker notes alongside the current slide, including in fullscreen and kiosk mode (#9533).Screen.Recording.2026-05-12.at.5.32.23.PM.mov
Query remote files with DuckDB in WASM notebooks
WASM notebooks can now read CSV, Parquet, JSON, and GeoJSON over HTTP from
mo.sql, SQL cells, rawduckdb.sql/query/execute, connection SQL methods, and theduckdb.read_csv/read_parquet/read_jsonPython API. marimo rewrites the AST withsqlglot, fetches the remote file via its shared WASM fetch util, and binds the result as a pandas DataFrame that DuckDB can scan (#9480).✨ Enhancements
marimo newCLI help page render properly at 80 columns (#9636)kernel_session()as context manager, DRY up tests (#9554)🐛 Bug fixes
lazy-polarsoutput viapl(lazy=True)(#9648)public/images in static HTML export (#9627)📚 Documentation
📝 Other changes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @archpulse, @arghaffari, @dmadisetti, @jeremytanjianle, @JoostGevaert, @kirangadhave, @leoadberg, @Light2Dark, @manzt, @mchav, @mscolnick, @peter-gy, @Rowlando13, @Shamik-07, @williambdean
And especially to our new contributors:
Full Changelog: marimo-team/marimo@0.23.6...0.23.7
v0.23.6Compare Source
What's Changed
🚨 Breaking changes
✨ Enhancements
marimo export html-wasmfor session previews (#9437)🐛 Bug fixes
📚 Documentation
📝 Other changes
26ee423)Contributors
Thanks to all our community and contributors who made this release possible: @app/renovate, @dmadisetti, @domwst, @fonnesbeck, @kirangadhave, @Light2Dark, @ljchang, @mchav, @mscolnick, @ralphptorres, @stephenlf, @wally-an
New Contributors
Full Changelog: marimo-team/marimo@0.23.5...0.23.6
v0.23.5Compare Source
What's Changed
This release adds editable code in slide view, OpenTelemetry distributed tracing support, and patches polars network I/O in WASM notebooks.
⭐ Highlights
Editable code in slide view
Press
C(or click the code icon) in slide view to toggle an inline code editor under each slide, including in fullscreen mode. Run mode shows a read-only editor wheninclude-codeis enabled.✨ Enhancements
🐛 Bug fixes
📚 Documentation
📝 Other changes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @dmadisetti, @koaning, @Light2Dark, @mscolnick, @ouatu-ro, @tigretigre
Full Changelog: marimo-team/marimo@0.23.4...0.23.5
v0.23.4Compare Source
What's Changed
✨ Enhancements
_format_planrespect format_on_save; format enabled/disabled unit tests (#9380)🐛 Bug fixes
📚 Documentation
📝 Other changes
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @daniel-bogdoll, @dmadisetti, @iggylari, @jpopesculian, @kirangadhave, @Light2Dark, @mscolnick, @ouatu-ro
New Contributors
Full Changelog: marimo-team/marimo@0.23.3...0.23.4
v0.23.3Compare Source
What's Changed
✨ Enhancements
🐛 Bug fixes
_resolve_proxyagainst bare-port inputs (#9366)_references_virtual_fileagainst cyclic data (#9369)_MARIMO_DISABLE_AUTH_ON_VIRTUAL_FILESenv flag (#9343)Channel.Pullwith NewType and union msg_type (#9296)📚 Documentation
📝 Other changes
f0187ea)--sandboxuv export (#9052) (ccc1841)58543f6)df4e40c)Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @bfriebel, @dmadisetti, @Light2Dark, @manzt, @mchav, @mscolnick, @NewDestinyDan, @peter-gy, @shaun0927
New Contributors
Full Changelog: marimo-team/marimo@0.23.2...0.23.3
v0.23.2Compare Source
What's Changed
🚨 Breaking changes
✨ Enhancements
ctx.packagesnamespace to code mode (#9233)uv_buildsupported versions in build-system (#9231)🐛 Bug fixes
FieldTypesaMapto preserve column order (#9279)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.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.