Skip to main content

Nezha CVE-2026-120046

| EUVDEUVD-2026-114328 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-10-30 VulnCheck GHSA-9764-g6f6-xvmw
6.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged dashboard user
  2. Delivery
    POST /api/v1/batch-delete/service to delete own service
  3. Exploit
    Orphaned service_histories rows remain
  4. Execution
    NULL pointer dereference in loadTodayStats on next startup
  5. Impact
    Dashboard panics in crash loop until rows removed

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated dashboard account (PR:L) capable of calling POST /api/v1/batch-delete/service to delete its own service, and it only harms deployments running the dashboard in non-TSDB mode - the description scopes the crash to 'the non-TSDB dashboard.' The denial of service is not instantaneous: it manifests only on the dashboard's next startup/restart, when loadTodayStats processes the orphaned service_histories rows, and persists across restarts until an operator manually deletes those rows. Limiting factors: authentication is mandatory (no anonymous path), TSDB-backed configurations appear unaffected, and the attacker cannot directly choose the trigger moment since it depends on a restart occurring.

Impact

This is a genuine but low-urgency availability issue, not a widespread-exploitation priority. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) and the 6.0 Medium score align well with the description: impact is confined to availability (VA:H; VC:N/VI:N), the attacker must be authenticated (PR:L), and the crash does not fire on demand but only on the dashboard's next startup - consistent with AC:H and the AT:P attack-requirement, since the attacker does not control when the restart occurs. There is no KEV listing and no verified public exploit code (only a vendor advisory and the patch commit are referenced), so exploitation status is 'no public exploit identified at time of analysis'; EPSS was not supplied. vuln.today assigns the decision label 'this_month', and SSVC-style signals agree: a low-privileged but legitimate user can self-inflict the condition, technical impact is a denial of service rather than code execution or data loss. One important conditional limit the raw vector does not convey: the crash only affects the non-TSDB dashboard configuration, so TSDB-backed deployments are not in scope per the description. Net: a real, patch-worthy robustness bug in a self-hosted product, but low real-world risk relative to its score - no confidentiality or integrity impact and a prerequisite of authenticated access.

Exploit ScenarioDerived

A low-privileged but authenticated Nezha dashboard user issues POST /api/v1/batch-delete/service to delete their own service, which hard-deletes the service but leaves orphaned service_histories rows behind. On the dashboard's next startup, ServiceSentinel.loadTodayStats dereferences a nil status map entry for that orphaned history and the process panics, producing a crash that recurs on each startup until the rows are removed manually. No public exploit code is identified; the bug and fix are confirmed from the vendor commit and VulnCheck advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

An authenticated dashboard user in Nezha 2.0.0 through 2.3.x can cause a persistent denial of service against non-TSDB deployments by deleting a service through POST /api/v1/batch-delete/service, which leaves orphaned service_histories rows behind. On the dashboard's next startup, ServiceSentinel.loadTodayStats dereferences the missing per-service status map entries for those leftover rows and panics, and the crash repeats on every restart until an operator manually removes the orphaned history. The trigger is not immediate and depends on a restart occurring, and TSDB-backed configurations appear unaffected; no public exploit code was identified at time of analysis and the issue is not in CISA KEV. Vendor-released patch: 2.4.0.

RemediationAI

Upgrade to Nezha 2.4.0 or later, which contains commit efd3e07b901d6acf7ef2ab3b26458cc07e7605dc adding nil checks in ServiceSentinel.loadTodayStats (release notes at https://github.com/nezhahq/nezha/releases/tag/v2.4.0). For instances that cannot be upgraded immediately, operators running a non-TSDB dashboard should proactively purge orphaned history rows (service_histories rows whose service_id no longer exists in the services table) before the next restart, since that is the only thing that clears an already-triggered crash loop; the trade-off is permanent loss of that historical monitoring data. Restricting dashboard accounts that can call POST /api/v1/batch-delete/service limits the authenticated attack surface, but the deletion API is a normal administrative capability and narrowing it may disrupt legitimate workflows. Transitioning the dashboard to TSDB-backed storage avoids the affected loadTodayStats accumulation path, at the cost of a storage migration. Note that neither workaround removes the underlying defect, so the version upgrade is the complete fix.

Affected VersionsENISA

nezha 2.0.0 <2.4.0

Affected Packages

euvd nezha fix: 2.4.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Nezha is a Go-based server and service monitoring panel. The affected code is ServiceSentinel.loadTodayStats (service/singleton/servicesentinel.go), which on startup iterates aggregated service_histories rows and accumulates Up/Down counters into two maps keyed by service ID, serviceStatusToday and monthlyStatus. Those maps are populated only for services that actually exist at startup, so history rows belonging to a service that has been hard-deleted (or to a quarantined service with a legacy invalid type) have no corresponding map entry; the unguarded map lookups return nil pointers and the subsequent field increments panic, aborting dashboard startup. The root cause class is CWE-476 (NULL Pointer Dereference), a reliability defect rather than a memory-safety issue, which is why the impact is scored as availability-only. The upstream fix in commit efd3e07b901d6acf7ef2ab3b26458cc07e7605dc hoists both map lookups into local variables and skips rows where either is nil, with a regression test covering retained, deleted, and quarantined service states. The storage backend matters: the affected accumulation path is the non-TSDB path, and the vulnerability description scopes the crash to the non-TSDB dashboard.

Know when Nezha gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.0 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Authenticated API call (PR:L) over the network; AC:H because the panic only fires on an attacker-uncontrolled next startup; impact is availability-only (A:H, C:N/I:N) in non-TSDB mode.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Nezha 2.0.0 before 2.4.0 contains a NULL pointer dereference vulnerability in ServiceSentinel.loadTodayStats that allows authenticated users to crash the dashboard by deleting a service. Attackers can delete their own service via POST /api/v1/batch-delete/service, leaving orphaned service_histories rows that crash the non-TSDB dashboard on its next startup until removed manually.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
self-hosted open-source server-monitoring dashboard, niche footprint
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Nezha

View all
CVE-2026-101090 CRITICAL POC
9.3 Sep 27

Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re

CVE-2026-53519 CRITICAL POC
9.1 Jun 12

Unauthenticated path traversal in Nezha Monitoring (nezhahq/nezha) before 2.0.13 allows remote attackers to read arbitra

CVE-2026-53523 MEDIUM POC
6.8 Jun 12

Host header injection in Nezha Monitoring versions 1.0.0 through 2.2.0 allows unauthenticated remote attackers to redire

CVE-2026-53522 MEDIUM POC
6.5 Jun 12

Unbounded WebSocket stream allocation in Nezha Monitoring versions 1.0.0 through 2.1.x allows any authenticated dashboar

CVE-2026-53520 MEDIUM POC
6.5 Jun 12

Nezha Monitoring versions 2.0.14 through 2.1.0 (exclusive) allows any authenticated user to exploit the NAT-based Host c

CVE-2026-62283 CRITICAL
9.9 Aug 21

Cross-tenant session hijacking in Nezha Monitoring (v1.14.13-1.14.14 and v2.0.0-2.0.9) lets any authenticated low-privil

CVE-2026-111384 HIGH
7.1 Oct 16

Nezha monitoring dashboards running versions 1.0.0 through 2.3.14 can be knocked offline by an authenticated user who ho

CVE-2026-111383 HIGH
7.1 Oct 16

Resource exhaustion in Nezha 2.0.13 through 2.3.14 allows an authenticated user to open unbounded concurrent connections

CVE-2026-111387 HIGH
7.1 Oct 16

Cleartext third-party credentials are exposed to any authenticated principal holding DDNS read access in Nezha versions

CVE-2026-105113 HIGH
7.1 Oct 03

Permanent deadlock of the alerting subsystem in Nezha Dashboard 1.8.0 through 2.3.12 allows any authenticated non-admin

CVE-2026-101086 HIGH
7.1 Sep 27

Authenticated privilege escalation in Nezha Dashboard before 2.3.5 lets any account holding the nezha:service:write scop

CVE-2026-101085 HIGH
7.1 Sep 27

Denial of service in the Nezha monitoring dashboard before 2.3.8 lets any authenticated non-administrator account crash

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy