VYPR
Critical severityNVD Advisory· Published Mar 9, 2026· Updated Mar 10, 2026

OneUptime Affected by Unsandboxed Code Execution in Probe Allows Any Project Member to Achieve RCE

CVE-2026-30887

Description

OneUptime is a solution for monitoring and managing online services. Prior to 10.0.18, OneUptime allows project members to run custom Playwright/JavaScript code via Synthetic Monitors to test websites. However, the system executes this untrusted user code inside the insecure Node.js vm module. By leveraging a standard prototype-chain escape (this.constructor.constructor), an attacker can bypass the sandbox, gain access to the underlying Node.js process object, and execute arbitrary system commands (RCE) on the oneuptime-probe container. Furthermore, because the probe holds database/cluster credentials in its environment variables, this directly leads to a complete cluster compromise. This vulnerability is fixed in 10.0.18.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

OneUptime prior to 10.0.18 allows project members to escape the Node.js vm sandbox via prototype-chain manipulation, achieving RCE on the probe container and full cluster compromise.

Vulnerability

Overview

CVE-2026-30887 is a critical sandbox escape vulnerability in OneUptime, an open-source monitoring and observability platform. The root cause lies in the Common/Server/Utils/Server/Utils/VM/VMRunner.ts file, where user-supplied JavaScript code from Synthetic Monitors is executed using the Node.js vm.runInContext() method [2]. The Node.js documentation explicitly warns that the vm module is not a security boundary and should never be used to run untrusted code, yet OneUptime passed user input directly to this function without any AST filtering or secure isolation [2].

Exploitation

An attacker with at least "Project Member" permissions can exploit this vulnerability entirely through the OneUptime web dashboard GUI [2]. By creating a Synthetic Monitor and injecting a standard prototype-chain escape payload such as const proc = this.constructor.constructor('return process')('return process')();, the attacker can bypass the sandbox and gain access to the underlying Node.js process object [1][2]. From there, they can require child_process to execute arbitrary shell commands on the oneuptime-probe container [2].

Impact

Successful exploitation leads to remote code execution (RCE) on the probe container. Because the probe holds sensitive environment variables such as ONEUPTIME_SECRET and and DATABASE_PASSWORD`, an attacker can exfiltrate these secrets to an external server [2]. This directly results in a complete cluster compromise, as the credentials provide access to the database and other cluster resources [1][2].

Mitigation

The vulnerability is fixed in OneUptime version 10.0.18 [1][2]. Users should upgrade immediately. No workarounds are documented; the fix likely involves replacing the insecure isolation mechanisms such as isolated-vm or running untrusted code in a dedicated restricted container [2].

AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
@oneuptime/commonnpm
< 10.0.1810.0.18

Affected products

2

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

3

News mentions

0

No linked articles in our index yet.