Nxploited/CVE-2026-39987
PoC files
3 filesFile viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.
Analysis
Technical assessment
A mass scanner for CVE-2026-39987 that connects to the unauthenticated Marimo /terminal/ws WebSocket endpoint, executes system commands to enumerate the environment, and collects sensitive data. It does not deliver a payload for remote control or establish a persistent shell for the operator; it verifies access and exfiltrates information.
Backdoor review
No backdoor observed in reviewed code
The supplied PoC is a mass scanner for CVE-2026-39987, a pre-auth RCE in Marimo. It connects to the vulnerable /terminal/ws endpoint, executes commands to enumerate the target system, and drops a proof-of-concept file. All actions are directed at the target host specified by the operator. No evidence of concealed harm, data exfiltration to an undisclosed third party, or misrepresented local execution was found.
Classification basis and observed behavior
Classification basis
The artifact's primary operation is to detect and validate the vulnerability by connecting to the target, executing reconnaissance commands, and collecting data. It is explicitly labeled as a 'MASS SCANNER' in its own banner and documentation. It does not provide the operator with an interactive shell or establish a backdoor; it only verifies access and exfiltrates information, which is characteristic of a scanner.
CVE-2026-39987.py:4README.md:15-16Requirements
- Target must be running a vulnerable version of Marimo (< 0.23.0) with the /terminal/ws endpoint exposed.
README.md:42-46 - Scanner requires Python 3.10+ and the websockets, rich, requests, and urllib3 libraries.
README.md:100-108
Observed behavior
- Connects to the /terminal/ws WebSocket endpoint without valid authentication, using a dummy Authorization header.
CVE-2026-39987.py:1107-1113 - Executes system commands (e.g., id, whoami, uname -a, ps aux, env) via the WebSocket shell to collect identity, system, and environment information.
CVE-2026-39987.py:1117-1118CVE-2026-39987.py:376-381 - Enumerates sensitive files and configurations, including /etc/shadow, SSH keys, database credentials, .env files, and Marimo notebooks and tokens.
CVE-2026-39987.py:654-667CVE-2026-39987.py:690-707CVE-2026-39987.py:430-521 - Writes a proof-of-concept file (Nx) to the web root and attempts to verify it via HTTP to confirm web accessibility.
CVE-2026-39987.py:964-1023 - Saves all collected data into a structured per-target output directory and generates summary files.
CVE-2026-39987.py:1141-1175
Behaviors behind the backdoor verdict
Observables
- Target Command Execution
- id, whoami, uname -a, cat /etc/shadow, etc.The script sends these commands over the WebSocket to the target host to enumerate the system. This is the disclosed exploit behavior.
CVE-2026-39987.py:372-378CVE-2026-39987.py:655-657 - Target File Write
- printf '%s' '{content}' > {nx_path}The script writes a proof-of-concept file (e.g., Nx.py) to the target's web root to verify write access and HTTP reachability. This is a standard PoC verification step.
CVE-2026-39987.py:977 - Local File Write
- nx_output/ directoryThe script saves collected target data locally to the nx_output/ directory. This is expected behavior for a scanner and does not involve exfiltration to an external party.
CVE-2026-39987.py:55-58 - Fixed Authorization Header
- Authorization: Bearer random-token-1234567890The script uses a fixed, non-secret Authorization header to connect to the WebSocket. The README explicitly states the header value is irrelevant, which aligns with the CVE description of missing authentication. This is not a concealed credential.
CVE-2026-39987.py:1107README.md:314
What the analysis did not establish
- One file (requirements.txt) was omitted from the evidence due to being unclassified, but its absence does not affect the classification of the primary Python script and README.
- One file (requirements.txt) was omitted from the text evidence but is listed as a non-executable dependency list in the README and is not required for behavioral analysis.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.