Description
OneUptime is an open-source monitoring and observability platform. Prior to version 10.0.35, a low-privileged authenticated user (ProjectMember) can achieve remote command execution on the Probe container/host by abusing Synthetic Monitor Playwright script execution. Synthetic monitor code is executed in VMRunner.runCodeInNodeVM with a live Playwright page object in context. The sandbox relies on a denylist of blocked properties/methods, but it is incomplete. Specifically, _browserType and launchServer are not blocked, so attacker code can traverse `page.context().browser()._browserType.launchServer(...)` and spawn arbitrary processes. Version 10.0.35 contains a patch.
Problem types
CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
CWE-184: Incomplete List of Disallowed Inputs
CWE-693: Protection Mechanism Failure
Product status
References
github.com/...uptime/security/advisories/GHSA-cqpg-phpp-9jjg
github.com/...uptime/security/advisories/GHSA-cqpg-phpp-9jjg
github.com/...ommit/e8e4ee3ff0740eb131045ab3d67453141c46178a