Skip to content
Heist/ feed
Back to feed
Critical

marimo Affected by Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass

Type: advisorySources: OSV

marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks 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 call validate_auth() for authentication, the /terminal/ws endpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification. This vulnerability is fixed in 0.23.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-39987
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 02:26 UTC · Revision 1

Source evidence

marimo Affected by Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass

core-osv · Original source

Published 9 Apr 2026, 17:16 UTC

marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks 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 call validate_auth() for authentication, the /terminal/ws endpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification. This vulnerability is fixed in 0.23.0.

osv:CVE-2026-39987
Complete source record
{
  "id": "e686f9ea2e1f7c385349e83077bd5199f771ac75badc819b2ac4d22be7f0c38c",
  "url": "https://osv.dev/vulnerability/CVE-2026-39987",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "marimo Affected by Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass",
    "summary": "marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks 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 call validate_auth() for authentication, the /terminal/ws endpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification. This vulnerability is fixed in 0.23.0.",
    "evidence": "osv:CVE-2026-39987",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-39987",
      "aliases": [
        "CVE-2026-39987",
        "GHSA-2679-6mx9-h9xc",
        "PYSEC-2026-407"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/marimo-team/marimo",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7d07685230f22883c59b178116c763d27e864071"
                },
                {
                  "fixed": "c24d4806398f30be6b12acd6c60d1d7c68cfd12a"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:coreweave:marimo:*:*:*:*:*:python:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.23.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "c24d4806398f30be6b12acd6c60d1d7c68cfd12a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "0.22.5",
            "0.22.4",
            "0.22.3",
            "0.22.2",
            "0.22.1",
            "0.22.0",
            "0.21.1",
            "0.21.0",
            "0.20.4",
            "0.20.3",
            "0.20.2",
            "0.20.1",
            "0.20.0",
            "0.19.11",
            "0.19.10",
            "0.19.9",
            "0.19.8",
            "0.19.7",
            "0.19.6",
            "0.19.5",
            "0.19.4",
            "0.19.3",
            "0.19.2",
            "0.19.1",
            "0.19.0",
            "0.18.4",
            "0.18.3",
            "0.18.2",
            "0.18.1",
            "0.18.0",
            "0.17.8",
            "0.17.7",
            "0.17.6",
            "0.17.5",
            "0.17.4",
            "0.17.3",
            "0.17.2",
            "0.17.1",
            "0.17.0",
            "0.16.5",
            "0.16.4",
            "0.16.3",
            "0.16.2",
            "0.16.1",
            "0.16.0",
            "0.15.5",
            "0.15.4",
            "0.15.3",
            "0.15.2",
            "0.15.1",
            "0.15.0",
            "0.14.17",
            "0.14.16",
            "0.14.15",
            "0.14.14",
            "0.14.13",
            "0.14.12",
            "0.14.11",
            "0.14.10",
            "0.14.9",
            "0.14.8",
            "0.14.7",
            "0.14.0",
            "0.13.15",
            "0.13.14",
            "0.13.13",
            "0.13.12",
            "0.13.11",
            "0.13.10",
            "0.13.9",
            "0.13.8",
            "0.13.7",
            "0.13.6",
            "0.13.5",
            "0.13.4",
            "0.13.3",
            "0.13.2",
            "0.13.1",
            "0.13.0",
            "0.12.10",
            "0.12.9",
            "0.12.8",
            "0.12.7",
            "0.12.6",
            "0.12.5",
            "0.12.4",
            "0.12.3",
            "0.12.2",
            "0.12.1",
            "0.12.0",
            "0.11.31",
            "0.11.30",
            "0.11.29",
            "0.11.28",
            "0.11.27",
            "0.11.26",
            "0.11.25",
            "0.11.24",
            "0.11.23",
            "0.11.22",
            "0.11.21",
            "0.11.20",
            "0.11.19",
            "0.11.18",
            "0.11.17",
            "0.11.16",
            "0.11.15",
            "0.11.14",
            "0.11.13",
            "0.11.12",
            "0.11.11",
            "0.11.10",
            "0.11.9",
            "0.11.8",
            "0.11.7",
            "0.11.6",
            "0.11.5",
            "0.11.4",
            "0.11.3",
            "0.11.2",
            "0.11.1",
            "0.11.0",
            "0.10.19",
            "0.10.18",
            "0.10.17",
            "0.10.16",
            "0.10.15",
            "0.10.14",
            "0.10.13",
            "0.10.12",
            "0.10.11",
            "0.10.10",
            "0.10.9",
            "0.10.8",
            "0.10.7",
            "0.10.6",
            "0.10.5",
            "0.10.4",
            "0.10.3",
            "0.10.2",
            "0.10.1",
            "0.10.0",
            "0.9.34",
            "0.9.33",
            "0.9.32",
            "0.9.31",
            "0.9.30",
            "0.9.29",
            "0.9.28",
            "0.9.27",
            "0.9.26",
            "0.9.25",
            "0.9.24",
            "0.9.23",
            "0.9.22",
            "0.9.21",
            "0.9.20",
            "0.9.19",
            "0.9.18",
            "0.9.17",
            "0.9.16",
            "0.9.15",
            "0.9.14",
            "0.9.13",
            "0.9.12",
            "0.9.11",
            "0.9.10",
            "0.9.9",
            "0.9.8",
            "0.9.7",
            "0.9.6",
            "0.9.5",
            "0.9.4",
            "0.9.3",
            "0.9.2",
            "0.9.0",
            "0.8.22",
            "0.8.21",
            "0.8.20",
            "0.8.19",
            "0.8.18",
            "0.8.17",
            "0.8.16",
            "0.8.15",
            "0.8.14",
            "0.8.13",
            "0.8.12",
            "0.8.11",
            "0.8.10",
            "0.8.9",
            "0.8.8",
            "0.8.7",
            "0.8.6",
            "0.8.5",
            "0.8.4",
            "0.8.3",
            "0.8.2",
            "0.8.1",
            "0.8.0",
            "0.7.20",
            "0.7.19",
            "0.7.18",
            "0.7.17",
            "0.7.16",
            "0.7.15",
            "0.7.14",
            "0.7.13",
            "0.7.12",
            "0.7.11",
            "0.7.10",
            "0.7.9",
            "0.7.8",
            "0.7.7",
            "0.7.6",
            "0.7.5",
            "0.7.4",
            "0.7.3",
            "0.7.2",
            "0.7.1",
            "0.7.0",
            "0.6.26",
            "0.6.25",
            "0.6.24",
            "0.6.23",
            "0.6.22",
            "0.6.21",
            "0.6.20",
            "0.6.19",
            "0.6.18",
            "0.6.17",
            "0.6.16",
            "0.6.15",
            "0.6.14",
            "0.6.13",
            "0.6.12",
            "0.6.11",
            "0.6.10",
            "0.6.9",
            "0.6.8",
            "0.6.7",
            "0.6.6",
            "0.6.5",
            "0.6.4",
            "0.6.3",
            "0.6.2",
            "0.6.1",
            "0.6.0",
            "fetch",
            "0.5.2",
            "0.5.1",
            "0.5.0",
            "0.4.11",
            "0.4.9",
            "0.4.8",
            "0.4.7",
            "0.4.6",
            "0.4.5",
            "0.4.4",
            "0.4.3",
            "0.4.2",
            "0.4.1",
            "0.4.0",
            "0.3.12",
            "0.3.11",
            "0.3.10",
            "0.3.9",
            "0.3.8",
            "0.3.7",
            "0.3.6",
            "0.3.5",
            "0.3.4",
            "0.3.3",
            "0.3.2",
            "0.3.1",
            "0.3.0",
            "0.2.13",
            "0.2.12",
            "0.2.11",
            "0.2.10",
            "0.2.9",
            "0.2.8",
            "0.2.7",
            "0.2.6",
            "0.2.5",
            "0.2.4",
            "0.2.3",
            "0.2.2",
            "0.2.1",
            "0.2.0",
            "0.1.88",
            "0.1.87",
            "0.1.86",
            "0.1.85",
            "0.1.84",
            "0.1.83",
            "0.1.82",
            "0.1.81",
            "0.1.80",
            "0.1.79",
            "0.1.78",
            "0.1.77",
            "0.1.76",
            "0.1.75",
            "0.1.74",
            "0.1.73",
            "0.1.72",
            "0.1.71",
            "0.1.70",
            "0.1.69",
            "0.1.68",
            "0.1.67",
            "0.1.66",
            "0.1.65",
            "0.1.64",
            "0.1.63",
            "0.1.62",
            "0.1.61",
            "0.1.60",
            "0.1.59",
            "0.1.56",
            "0.1.55",
            "0.1.54",
            "0.1.53",
            "0.1.52",
            "0.1.51",
            "0.1.50",
            "0.1.49",
            "0.1.48",
            "0.1.47",
            "0.1.46",
            "0.1.45",
            "0.1.44",
            "0.1.43",
            "0.1.42",
            "0.1.41",
            "0.1.40",
            "0.1.39",
            "0.1.38",
            "0.1.37",
            "0.1.36",
            "0.1.35",
            "0.1.34",
            "0.1.33",
            "0.1.32",
            "0.1.31",
            "0.1.30",
            "0.1.29",
            "0.1.28",
            "0.1.27",
            "0.1.26",
            "0.1.25",
            "0.1.24",
            "0.1.23",
            "0.1.22",
            "0.1.21",
            "0.1.19",
            "0.1.18",
            "0.1.17",
            "0.1.16",
            "0.1.15",
            "0.1.14",
            "0.1.13",
            "0.1.12",
            "0.1.11",
            "0.1.10",
            "0.1.9",
            "0.1.8",
            "0.1.7",
            "0.1.6",
            "0.1.5",
            "0.1.4",
            "0.1.3",
            "0.1.2",
            "0.1.1",
            "0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39987.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:49.189447978Z",
      "provider": "osv",
      "references": [
        "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-39987",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39987.json",
        "https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-39987",
        "https://www.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hours",
        "https://github.com/marimo-team/marimo/commit/c24d4806398f30be6b12acd6c60d1d7c68cfd12a",
        "https://github.com/marimo-team/marimo/pull/9098"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-306"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39987.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-39987",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 517352,
  "published_at": "2026-04-09T17:16:55.639+00:00"
}