CVE-2026-30887
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedOneUptime 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.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidenceOneUptime versions prior to 10.0.18 execute user-provided Playwright/JavaScript code in Synthetic Monitors using the insecure Node.js vm module. Attackers escape the sandbox via prototype-chain manipulation (this.constructor.constructor) to access the process object and execute arbitrary commands, compromising the probe container and its stored database/cluster credentials.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data< 10.0.18CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Network
- Complexity
- Low
- Privileges
- Low
- User interaction
- None
- Scope
- Changed
- Confidentiality
- High
- Integrity
- High
- Availability
- High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify OneUptime installation versionCheck your OneUptime installation's version number. This is typically visible in the admin dashboard, Helm chart values, docker-compose.yml, or package.json if self-hosted. For managed deployments, contact your administrator or check the vendor documentation.Affected if The installed version is less than 10.0.18 (e.g., 10.0.17, 10.0.10, etc.)
-
Locate the Synthetic Monitors featureNavigate to your OneUptime dashboard and look for Synthetic Monitors or Monitoring settings. Check if any synthetic monitors (URL/API monitors using Playwright/JavaScript code) are configured or active.Affected if Synthetic Monitors feature is enabled and actively used in your deployment
-
Identify oneuptime-probe containerCheck your container orchestration (Kubernetes/Docker) for a container named 'oneuptime-probe' or similar. Inspect its running configuration and environment variables.Affected if A oneuptime-probe container exists and has database or cluster credentials stored as environment variables
-
Verify vm module usage in code (if accessible)If you have access to the OneUptime source code or container, search for usage of Node.js 'vm' module in the synthetic monitoring code paths. Look for vm.compileFunction or vm.Script calls without sandboxing.Affected if The code uses the Node.js vm module without secure sandbox configuration
Your environment is affected if OneUptime version is below 10.0.18 AND the Synthetic Monitors feature is enabled, particularly if a probe container with environment variables exists in your deployment.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scoped10.0.18
Upgrade OneUptime to version 10.0.18 or later. Prior to deployment, verify the fix properly sandboxes code execution and review credential storage practices in probe containers.
10.0.18
- 1. Backup your OneUptime installation and database before upgrading
- 2. Check your current OneUptime version to confirm it is below 10.0.18
- 3. For containerized deployments, update your Docker image or docker-compose file to use the tag/version 10.0.18
- 4. For manual installations, pull the updated code from the OneUptime repository for version 10.0.18
- 5. Restart the oneuptime-probe container and other OneUptime services
- 6. Verify the upgrade was successful by checking the version in the admin dashboard
- 7. Test that Synthetic Monitors still function correctly with the patched vm module
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation3.0 h
- Implementation4.0 h
- Testing8.0 h
- Review / QA3.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $4,896.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2026-30887 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2026-30887 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data