Skip to main content

Nezha CVE-2026-101087

| EUVDEUVD-2026-88022 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-27 VulnCheck GHSA-qvpf-fj3j-7cw6
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Nezha dashboard (PR:L)
  2. Delivery
    Configure webhook with 6to4/NAT64 IPv6 URL
  3. Exploit
    Bypass denylist via IsGlobalUnicast gap
  4. Execution
    Dashboard issues request to restricted IPv6 endpoint
  5. Impact
    Limited internal reach only under non-standard routing

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

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

Exploitation Conditions

Requires an authenticated Nezha user (PR:L) with access to configure a notification or DDNS webhook URL. The attacker must supply an IPv6 literal in the 6to4 prefix 2002::/16 or the local-use NAT64 prefix 64:ff9b:1::/48, which the pre-2.3.3 denylist failed to block. Critically, meaningful exploitation is limited to deployments whose network provides unusual or non-standards-compliant routing for these IPv6 transition ranges; on standards-compliant networks these addresses do not resolve to internal targets, and the advisory confirms no path to IPv4 metadata, loopback, or private-network requests was demonstrated. Affects Nezha 2.0.10 through 2.3.2; fixed in 2.3.3 (commit d1fcde8e).

Impact

This is a genuinely low-priority, high-caveat SSRF. The vendor CVSS 4.0 score is 5.3 (medium) with vector AV:N/AC:L/PR:L/UI:N/VC:N/VI:L/SC:L, and CWE-918 (SSRF) is the correct classification. However, the description itself is unusually candid about the weakness of the finding: the bypass only reaches otherwise-restricted IPv6 endpoints 'where the dashboard's network provides unusual or non-standards-compliant routing for these transition ranges,' and explicitly states 'no direct path to an IPv4 metadata, loopback, or private-network HTTP request has been demonstrated.' That materially undercuts the classic SSRF-to-cloud-metadata impact that makes such bugs dangerous. There is no EPSS score, no CISA KEV listing, and no public exploit code provided - exploitation status is 'no public exploit identified at time of analysis.' Exploitation is authenticated (PR:L requires a valid dashboard user able to configure a webhook), and effective attacks require attacker-favorable, non-standard routing of 6to4/NAT64 prefixes on the victim's network, so the real-world AC is higher than the vendor's AC:L implies. Net: a real, patch-worthy SSRF denylist-completeness gap, but closer to a hardening fix than an urgent exploitable threat - treat as low priority absent evidence of exploitable routing in the specific deployment.

Exploit ScenarioDerived

An authenticated Nezha dashboard user with permission to configure a notification or DDNS webhook sets the target URL to an IPv6 literal in the 6to4 (2002::/16) or local-use NAT64 (64:ff9b:1::/48) range, e.g. http://[64:ff9b:1::a9fe:a9fe]/metadata, which the flawed denylist accepts because Go's netip.Addr.IsGlobalUnicast returns true. The dashboard then issues an HTTP request to that address; only if the surrounding network non-standardly routes these transition prefixes toward an internal or link-local destination does the attacker gain any restricted reach. No public exploit code exists, and no path to IPv4 metadata/loopback/private ranges has been demonstrated.

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 – Sep 27, 2026

Authenticated users of the Nezha monitoring dashboard (versions 2.0.10 through 2.3.2) who can configure notification or DDNS webhook URLs can bypass the dashboard's SSRF denylist by supplying an IPv6 literal in the 6to4 prefix 2002::/16 or the local-use NAT64 prefix 64:ff9b:1::/48, causing the server to issue outbound HTTP requests to those endpoints. Exploitation is heavily constrained: the CVSS vector is PR:L, meaning an attacker must already hold a webhook-configuring account, and meaningful impact depends on the deployment's network providing unusual or non-standards-compliant routing for these transition ranges; the advisory confirms no path to IPv4 metadata, loopback, or private-network requests was demonstrated. No public exploit code has been identified at time of analysis and the issue is not known to be exploited, but the vendor has shipped a fix in version 2.3.3 (commit d1fcde8e) that explicitly blocks both prefixes. The independent assessment rates this as a low-priority, high-caveat SSRF with AC:H and only low confidentiality impact.

RemediationAI

Upgrade Nezha to version 2.3.3 or later, which implements the upstream fix commit d1fcde8e adding the 6to4 prefix 2002::/16 and the local-use NAT64 prefix 64:ff9b:1::/48 to the blockedHTTPClientCIDRs denylist (see https://github.com/nezhahq/nezha/security/advisories/GHSA-jr2j-7hvh-h4q9). Where upgrading is not immediately possible, restrict webhook and DDNS URL configuration to fully trusted administrators, since the vulnerability requires an authenticated account with that capability; this reduces exposure to insiders or compromised low-privilege users but does not eliminate risk from trusted accounts. Network-layer compensating controls are also effective: block outbound traffic from the Nezha dashboard host to 2002::/16 and 64:ff9b:1::/48 (and ideally to all non-routable and special-purpose ranges) at the host firewall or egress gateway, at the cost of breaking any legitimate webhook endpoints that genuinely use those prefixes, which is rare. Enforce that egress traffic only reaches explicitly allow-listed webhook destinations; this tightly constrains SSRF but adds ongoing maintenance overhead as destinations change. Note that because the advisory did not demonstrate a path to IPv4 metadata, loopback, or private-network services, deployments on standards-compliant networks are at low practical risk even before patching.

Affected VersionsENISA

nezha 2.0.10 <2.3.3

Affected Packages

euvd nezha fix: 2.3.3

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 monitoring and alerting platform whose dashboard lets authenticated users define outbound webhook URLs for notifications and DDNS updates. To prevent server-side request forgery CnCWE-918), the code path in pkg/utils/http.go resolves the target URL and validates the resolved IP against a denylist of CIDRs assembled with mustParseHTTPClientCIDRs, relying on Go's netip.Addr.IsGlobalUnicast to reject non-routable addresses. That check returns true for IPv6 transition ranges such as the 6to4 prefix 2002::/16 (which embeds an IPv4 address in bits 16-47) and the local-use IPv4/IPv6 translation prefix 64:ff9b:1::/48, because these are formally global-unicast space even though they may be routed internally on misconfigured or non-standards-compliant networks. The affected releases therefore accepted webhook URLs pointing at those ranges, and the fix (commit d1fcde8e) simply adds "2002::/16" and "64:ff9b:1::/48" to blockedHTTPClientCIDRs and introduces regression tests (TestHTTPURLTargetIPAllowed, TestResolveAllowedHTTPURLRejectsSpecialIPv6Literals) asserting that well-known NAT64 64:ff9b::, local-use NAT64 64:ff9b:1::, and 6to4 addresses embedding both public (2002:0101:0101::1) and link-local (2002:a9fe:a9fe::1) IPv4 values are rejected. The root cause class is insufficient denylist coverage of special-purpose address ranges in an SSRF filter, not a flaw in the HTTP client itself.

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 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L
vuln.today AI 3.1 LOW

Authenticated webhook config gives PR:L; AC:H because exploitation depends on non-standard network routing of transition prefixes; only limited outbound request reach (C:L), no demonstrated integrity/availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Nezha versions 2.0.10 through 2.3.2 use a restricted HTTP client to validate user-configurable notification and DDNS webhook URLs, but the denylist did not cover IPv6 transition ranges - specifically the 6to4 prefix 2002::/16 and the local-use IPv4/IPv6 translation prefix 64:ff9b:1::/48. Because such addresses satisfy Go's netip.Addr.IsGlobalUnicast check, the URL validator accepted them. An authenticated user able to configure a webhook may be able to cause the dashboard to issue requests to an otherwise restricted IPv6 endpoint, but only where the dashboard's network provides unusual or non-standards-compliant routing for these transition ranges; no direct path to an IPv4 metadata, loopback, or private-network HTTP request has been demonstrated. The issue is fixed in version 2.3.3 (commit d1fcde8e), which blocks both prefixes.

Threat Intelligence Overview

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Low
niche self-hosted Go server/agent monitoring dashboard, no enterprise footprint
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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-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-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-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-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

CVE-2026-59155 MEDIUM
6.9 Jul 10

Nezha Monitoring versions prior to 2.2.5 expose stored third-party API credentials in plaintext through two listing API

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

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