Summary
CVE-2026-53519 is a critical path traversal vulnerability (CWE-22) in Nezha Monitoring (nezhahq/nezha), a self-hostable, lightweight server and website monitoring tool, affecting all versions prior to 2.0.13. The flaw allows an unauthenticated remote attacker to read arbitrary files from the server filesystem — including the application’s config.yaml — without any credentials or user interaction. Disclosure of the secrets contained in that file enables a full administrative account takeover. The vulnerability carries a CVSS v3.1 base score of 9.1 (Critical).
Technical details
- Root cause: The
fallbackToFrontendfunction in the dashboard’sNoRoutehandler validates URL paths using Go’sstrings.HasPrefix, checking only that the raw URL string begins with/dashboard. This is a substring match, not a proper path-segment boundary check. - Trigger conditions: An attacker sends a single unauthenticated HTTP GET request with a crafted URL such as
GET /dashboard../data/config.yaml. TheHasPrefixcheck passes because the string does start with/dashboard.strings.TrimPrefixthen strips the/dashboardprefix, leaving../data/config.yaml.path.Join("admin-dist", "../data/config.yaml")normalizes this todata/config.yaml, whichos.Statresolves andhttp.ServeFilereturns to the caller. Because Go’shttp.ServeFileguard only rejects URLs containing a standalone..path segment, and none exists in the original URL after normalization, the guard does not trigger. - Variant payloads: The bypass also works with percent-encoded variants (e.g.,
/dashboard%2e%2e/data/config.yaml,/dashboard..%2fdata/config.yaml). - Attack vector: Network, no authentication required, no user interaction required (AV:N/AC:L/PR:N/UI:N).
- Impact: The exposed
config.yamlcontains thejwt_secret_key(HS256 signing key),agent_secret_key, OAuth2 client credentials, and API tokens. An attacker can retrieve the SQLite database via a second unauthenticated request (GET /dashboard../data/sqlite.db), identify admin user IDs, and forge a valid HS256 JWT to authenticate as an administrator — achieving full administrative account takeover in two unauthenticated HTTP requests.
Affected software
- Nezha Monitoring (
nezhahq/nezha) — all versions prior to 2.0.13
Severity
- CVSS v3.1 Base Score: 9.1 (Critical)
- Vector String:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Mitigation and recommended actions
- Immediate action — patch: Upgrade Nezha Monitoring to version 2.0.13 or later, which contains the vendor-provided fix replacing the substring-based prefix check with proper path-segment-aware validation and post-normalization boundary enforcement.
- If immediate patching is not possible: Restrict network-level access to the Nezha dashboard to trusted IP ranges only. Do not expose the dashboard port directly to the internet. Rotate all secrets in
config.yaml— includingjwt_secret_key,agent_secret_key, and any OAuth2 credentials — even after patching, as prior exposure cannot be ruled out.
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

