CVE-2026-54386: marimo Reflected XSS Vulnerability (CVSS 6.1)
marimo, a notebook environment for Python, contains a reflected cross-site scripting (XSS) vulnerability in versions before 0.23.9. An attacker can craft a malicious link containing malicious code in the file query parameter. When a user visits this link while accessing their marimo server, the injected JavaScript executes in the user's browser without being blocked by standard security protections. No authentication is required to exploit this vulnerability—any user who clicks a crafted link is at risk. The impact is limited to the attacker's ability to read or modify data visible to the victim within that marimo session, or perform actions on their behalf.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.1 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-79
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-17 / 2026-07-14
NVD description (verbatim)
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.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability is a reflected XSS flaw (CWE-79) in marimo's notebook page. The 'file' query parameter is reflected into inline JavaScript without proper escaping of single quotes, allowing an attacker to break out of a string literal and inject arbitrary code. The attack bypasses a 404 check by prefixing the payload with '__new__', and executes client-side without Content-Security-Policy restrictions in the victim's marimo origin. The flaw affects the client-side rendering layer rather than backend authentication or session management.
Business impact
An attacker leveraging this vulnerability could steal session tokens, read sensitive notebook contents, or perform unauthorized actions within a victim's marimo environment. If a marimo instance hosts confidential research, data analysis, or credentials, this XSS could lead to data exfiltration or unauthorized modifications. The attack requires social engineering (tricking a user into clicking a link), which limits broad exploitation; however, internal teams sharing marimo notebooks may be at elevated risk if links are distributed via email or messaging platforms. Organizations relying on marimo for collaborative or sensitive work should treat this as a priority remediation item.
Affected systems
All marimo installations running version 0.23.8 and earlier are vulnerable. marimo 0.23.9 and later versions contain the fix. The vulnerability is unauthenticated and client-side, so it affects any marimo server accessible to an attacker capable of crafting and distributing a malicious link to users who have active sessions.
Exploitability
Exploitability is moderate to high from a technical perspective: the attack requires no special tools or authentication, only the ability to craft a URL and social-engineer a user into clicking it. The barrier to exploitation is low for a skilled attacker; however, real-world impact depends on user behavior (users must click a link) and the sensitivity of the target environment. The lack of Content-Security-Policy protections increases the risk, as does the ability to bypass the 404 check using the '__new__' prefix technique.
Remediation
Upgrade marimo to version 0.23.9 or later. This version includes proper escaping of single quotes in the file query parameter, eliminating the injection vector. No workarounds are available for earlier versions; patching is the only reliable mitigation. If immediate patching is not possible, restrict access to marimo servers to trusted networks and educate users to avoid clicking suspicious links to marimo instances.
Patch guidance
Verify the installed version of marimo using 'pip show marimo' or similar package management tools. If the version is below 0.23.9, update immediately using 'pip install --upgrade marimo' or your organization's standard Python package update process. After upgrading, verify the fix by testing with a crafted XSS payload in the file parameter to confirm it no longer executes. Coordinate rollout across all internal marimo deployments to ensure consistency.
Detection guidance
Monitor web server logs for marimo instances for unusual query parameters in requests to the notebook page, particularly those containing JavaScript keywords, single quotes, or '__new__' prefixes in the 'file' parameter. Alert on any attempts to access non-existent files with payloads designed to break out of string literals. Additionally, review browser console logs and web security audit tools for instances of reflected XSS warnings or CSP violations. Intrusion detection systems should flag requests with common XSS payloads in query parameters.
Why prioritize this
Although the CVSS score is 6.1 (MEDIUM), this vulnerability merits prompt attention due to its low attack complexity, lack of authentication requirement, and potential for data exfiltration in collaborative environments. The user interaction requirement (clicking a link) reduces urgency compared to wormable flaws, but the ease of exploitation and ease of payload delivery via internal communication channels elevates practical risk. Organizations using marimo for sensitive work should prioritize this patch within their standard patching cycle.
Risk score, explained
The CVSS 3.1 score of 6.1 reflects a network-attack vector (AV:N), low attack complexity (AC:L), no privilege requirement (PR:N), required user interaction (UI:R), and changed scope (S:C) with low impact to confidentiality and integrity but no impact to availability. The score appropriately captures an unauthenticated XSS with cross-site implications and limited damage scope (low C and I impact), but does not account for the sensitivity of the data a particular marimo instance may contain. Organizations should adjust their internal risk assessment based on their use of marimo and the confidentiality of hosted notebooks.
Frequently asked questions
Can this vulnerability be exploited without user interaction?
No. The vulnerability requires a user to click a malicious link or visit a specially crafted URL. An attacker cannot exploit this remotely by simply scanning or probing a marimo server; they must trick a user into clicking the link. This social engineering requirement moderates the overall attack surface.
Does updating marimo automatically fix instances that have already been compromised?
Updating marimo to 0.23.9 or later fixes the vulnerability on the server side, preventing future exploitation. However, if an attacker has already stolen session tokens or credentials through a prior attack, the update alone does not invalidate those stolen artifacts. Users should clear browser cookies/tokens and reset any exposed credentials after a confirmed incident.
Are there other reflected XSS vulnerabilities in marimo?
This advisory specifically addresses CVE-2026-54386. Other vulnerabilities may exist; always review the marimo project's security advisories and changelogs for additional fixes. Running the latest version (0.23.9+) addresses this particular flaw, but security best practices include keeping all dependencies up to date and monitoring the vendor's security communications.
What if I cannot upgrade marimo immediately?
Restrict network access to marimo instances to trusted users or internal networks only. Educate users to avoid clicking links to marimo from untrusted sources and to report suspicious links. Review and strengthen any Content-Security-Policy headers, though note that marimo may not enforce CSP by default. Implement monitoring as described in the detection guidance section and plan an upgrade as soon as feasible.
This analysis is provided for informational purposes and reflects publicly available information as of the publication date. Security assessments should be tailored to your organization's specific environment, data classification, and risk tolerance. Always verify patch availability and compatibility with your marimo deployment before applying updates. For the latest vendor guidance, consult the official marimo repository and security advisories. SEC.co makes no warranty regarding the completeness or accuracy of this analysis and recommends consulting your security team and the vendor before making remediation decisions. Source: NVD (public-domain), retrieved 2026-07-27. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2016-20070MEDIUMPrivilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk
- CVE-2019-25743MEDIUMWordPress Soliloquy Lite 2.5.6 Stored XSS Vulnerability
- CVE-2019-25744MEDIUMWordPress Popup Builder 3.49 Stored XSS Vulnerability – Exploit Prevention & Patch Guide