Ecosyste.ms: Advisories
An open API service providing security vulnerability metadata for many open source software ecosystems.
Security Advisories: GSA_kwCzR0hTQS1oZnhoLXJqdjctMjM2Oc4AA3Xr
Uptime Kuma Authenticated remote code execution via TailscalePing
Summary
The runTailscalePing
method of the TailscalePing
class injects the hostname
parameter inside a shell command, leading to a command injection and the possibility to run arbitrary commands on the server.
Details
When adding a new monitor on Uptime Kuma, we can select the "Tailscale Ping" type. Then we can add a hostname and insert a command injection payload into it. The front-end application requires that the field follow a specific pattern, this validation only happens on the front-end and can be removed by removing the attribute pattern
on the input
element.
We can finally add the new monitor and observe that our command is being executed.
NOTE: When using Uptime Kuma inside a container, the "TailScale Ping" type is not visible. We can fake this information by intercepting WebSocket messages and set the isContainer
option to false
.
PoC
- Authenticate.
- Create a new monitor.
- Select the TailScale Ping type (if not visible, see the note in the details section).
- Insert the command injection payload inside the
hostname
field. (for example$(id >&2)
) - Remove the
pattern
requirement on the field. - Save and start the monitor.
Impact
An authenticated user can execute arbitrary command on the server running Uptime Kuma.
Remediation
There are other command execution in the codebase, they use a method spawn
from the child_process
module which does not interpret the command as a shell command, the same thing should be done here.
NOTE: The Tailscale CLI seems to support the --
sequence. It should be used between the ping
subcommand and the hostname
argument to avoid argument injection.
JSON: https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1oZnhoLXJqdjctMjM2Oc4AA3Xr
Source: GitHub Advisory Database
Origin: Unspecified
Severity: Moderate
Classification: General
Published: about 1 year ago
Updated: about 1 year ago
Identifiers: GHSA-hfxh-rjv7-2369
References:
- https://github.com/louislam/uptime-kuma/security/advisories/GHSA-hfxh-rjv7-2369
- https://github.com/advisories/GHSA-hfxh-rjv7-2369
Blast Radius: 1.0
Affected Packages
npm:uptime-kuma
Dependent packages: 0Dependent repositories: 0
Downloads: 26 last month
Affected Version Ranges: >= 1.23.0, <= 1.23.6
Fixed in: 1.23.7
All affected versions:
All unaffected versions: