PoC files

4 files

File viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.

GitHub

Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact contains a Python script (exploit.py) that connects to a marimo terminal WebSocket endpoint without authentication and executes arbitrary system commands or provides an interactive shell, directly exercising CVE-2026-39987.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of a README.md lab guide and an exploit.py script for CVE-2026-39987. The README describes the vulnerability and provides educational instructions for reproducing the authentication bypass in a Docker lab. The exploit.py script implements a proof-of-concept that connects to the vulnerable /terminal/ws WebSocket endpoint without authentication and executes arbitrary commands or provides an interactive shell. Both files are consistent with a legitimate educational PoC for the described CVE; no concealed backdoor, deceptive payload, or operator-directed harm is observed.

ClassificationExploit
Model confidence100%
AuthenticationNot required
LanguagesPython
Target softwaremarimo
Attack typesAuthentication BypassRemote Code Execution
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The file exploit.py is a functional script that actively exploits the vulnerability by establishing an unauthenticated WebSocket connection to /terminal/ws and executing arbitrary commands, which is the definition of exploit code.

exploit.py:1-8exploit.py:16-78

Requirements

  • A vulnerable marimo instance (<= 0.20.4) running in edit mode with the /terminal/ws endpoint exposed.README.md:30
  • Python 3 with the websocket-client library installed.README.md:80

Observed behavior

  • Connects to a WebSocket URL without providing any authentication token.exploit.py:21-22
  • Sends a system command over the WebSocket and prints the output.exploit.py:44-47
  • Provides an interactive shell by reading user input and sending it as commands over the WebSocket.exploit.py:119-129
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Websocket Url
ws://127.0.0.1:2718/terminal/wsTarget WebSocket endpoint used by the PoC exploit to demonstrate the authentication bypass.README.md:81exploit.py:178
Command Execution
id && whoami && hostnameExample command executed by the PoC to demonstrate arbitrary command execution on the target.README.md:81
Review boundaries

What the analysis did not establish

  • The evidence includes only two of four repository files; Dockerfile.target and docker-compose.yml are omitted, but their absence does not affect classification of the included exploit.py.
  • The artifact code was not executed; classification is based solely on static analysis of the provided source text.
  • Two additional files (Dockerfile.target and docker-compose.yml) are present in the repository but were not included in the text evidence; their content could not be reviewed.
  • Binary content was not analyzed per the evidence envelope policy; no binary files were flagged.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Docker lab environments

1
GitHub

docker-compose.yml

Created
Vuln labCVE-2026-39987Compose · mixed

1 Compose manifest · 1 Dockerfile · 2 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose lab that sets up a vulnerable marimo 0.20.4 server (target) and a Python attacker container on a shared bridge network. The lab is designed to demonstrate CVE-2026-39987, an authentication bypass in the /terminal/ws WebSocket endpoint leading to remote code execution.

README.md:1-5docker-compose.yml:1-26

Lab assessment

Vulnerability lab

The README explicitly states the lab is for understanding, reproducing, and patching CVE-2026-39987. It provides a vulnerable target (marimo 0.20.4), an exploit script, and step-by-step instructions for exercising the vulnerability.

README.md:1-5README.md:28-33
Lab shapeCompose · mixed
Services2
Compose manifests1
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

target

vulnerable marimo server

Built from Dockerfile.target, runs marimo 0.20.4 in edit mode with token authentication on port 2718, bound to all interfaces. Runs as root inside the container.

Dockerfile.target:1-17docker-compose.yml:4-13

attacker

exploit execution environment

A Python 3.12-slim container kept alive with 'tail -f /dev/null'. Intended for executing the exploit script against the target. No volumes or ports are mapped.

docker-compose.yml:15-21

exploit.py

proof-of-concept exploit

Python script that connects to the target's /terminal/ws WebSocket without authentication, sends commands, and returns output or provides an interactive shell.

exploit.py:1-9exploit.py:12-223
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2026-39987

Supported by supplied evidence

The lab explicitly targets CVE-2026-39987. The README describes the vulnerability as a pre-auth RCE via /terminal/ws authentication bypass in marimo <= 0.20.4, and the exploit script implements exactly that attack path.

README.md:1-5README.md:28-33exploit.py:1-9
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose installed on the host.README.md:78-80
  • Python 3 and websocket-client package installed on the host or attacker container.README.md:85-86
  • Target marimo server must be running in edit mode with token authentication enabled (as configured in Dockerfile.target).Dockerfile.target:16README.md:28-30

Evidence-described exercise path

  1. Build and start the lab with 'docker-compose up --build -d'.README.md:78-80
  2. Confirm authentication is active on legitimate endpoints (e.g., /ws) by attempting unauthenticated access.README.md:107-118
  3. Run the exploit script against ws://127.0.0.1:2718/terminal/ws to execute a command or get an interactive shell.README.md:122-155
  4. Understand the root cause: missing authentication check on /terminal/ws.README.md:159-199
  5. Verify the patch by upgrading marimo to 0.23.0 and re-running the exploit, which should be rejected.README.md:203-218
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the lab's own target container. The exploit connects to the target's WebSocket, executes commands inside that container, and does not attempt to escape the Docker network, access the host filesystem, or connect to external systems. The lab uses expected port mapping and root user for the target, which are documented requirements for the exercise.

exploit.py:12-223docker-compose.yml:1-26README.md:28-33
Review boundaries

What the analysis did not establish

  • The exploit script is a text file and its behavior is fully visible; no binary files are present.
  • The Docker Compose file uses 'user: root' for the target, which is a documented requirement for the PoC to show uid=0, not a hidden escalation.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

Linked vulnerabilities

1