Skip to main content

marimo EUVDEUVD-2026-37809

| CVE-2026-54386 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-06-17 VulnCheck GHSA-8m59-7xv8-735h
5.1
CVSS 4.0 · Vendor: VulnCheck
Share

Severity by source

Vendor (VulnCheck) PRIMARY
5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
6.1 MEDIUM

Network-delivered reflected XSS requires no attacker privileges but mandates victim interaction; scope changes to the browser enabling limited confidentiality and integrity impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
A
Scope
X

Lifecycle Timeline

2
Source Code Evidence Fetched
Jun 17, 2026 - 22:22 vuln.today
Analysis Generated
Jun 17, 2026 - 22:22 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on marimo (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.23.9.

DescriptionCVE.org

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.

AnalysisAI

Reflected XSS in the marimo notebook server before version 0.23.9 enables unauthenticated remote attackers to inject and execute arbitrary JavaScript in the origin of a victim's marimo server by supplying a crafted file query parameter. The flaw stems from improper single-quote escaping in assets.py when reflecting the parameter into an inline JavaScript string literal; attackers bypass the server's 404 check by prefixing payloads with __new__, and execution occurs without Content-Security-Policy restrictions. No active exploitation is confirmed (not in CISA KEV) and no public exploit code has been identified at time of analysis, though the attack mechanism is straightforward for a motivated attacker targeting shared or collaborative marimo deployments.

Technical ContextAI

marimo is a Python-based reactive notebook framework that serves a web interface for authoring and executing notebooks. The vulnerability resides in the HTTP handler responsible for the notebook page (identified as assets.py per the VulnCheck advisory), which takes the file query parameter and embeds it directly into an inline JavaScript string literal in the HTML response without sanitizing single-quote characters. CWE-79 (Improper Neutralization of Input During Web Page Generation) describes this root cause: user-supplied data is concatenated into a script context without context-aware encoding. The __new__ prefix is a recognized sentinel value in marimo that instructs the server to treat the request as creating a new notebook rather than loading an existing file, effectively bypassing the 404 guard that would otherwise reject unrecognized filenames. Because no Content-Security-Policy header is enforced on the notebook page, injected scripts run with full same-origin privileges. All marimo versions covered by CPE cpe:2.3:a:marimo-team:marimo:*:*:*:*:*:*:*:* before 0.23.9 are affected.

RemediationAI

Upgrade to marimo 0.23.9 or later, which resolves the vulnerability via commit fdd55c8cf6260ae23bb411dc9d9269def5cf75d6 (https://github.com/marimo-team/marimo/commit/fdd55c8cf6260ae23bb411dc9d9269def5cf75d6); the release is available at https://github.com/marimo-team/marimo/releases/tag/0.23.9. If an immediate upgrade is not feasible, restrict access to the marimo notebook server to trusted, authenticated users via a reverse proxy enforcing authentication (e.g., HTTP Basic Auth or OAuth2 proxy) - this eliminates the unauthenticated attack surface, though it does not fix the underlying escaping defect. Injecting a strict Content-Security-Policy header at the reverse proxy layer (e.g., script-src 'self') would reduce the exploitability of any XSS by blocking inline script execution, but note this may break marimo's own inline scripting and requires testing. Avoid exposing marimo servers directly to untrusted networks until the patch is applied.

Share

EUVD-2026-37809 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy