Nezha 2.0.10 through 2.3.2 SSRF Denylist Bypass IPv6
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-101087
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 23:52 UTC · Revision 1
Source evidence
Nezha 2.0.10 through 2.3.2 SSRF Denylist Bypass IPv6
core-osv · Original sourcePublished 27 Sept 2026, 20:49 UTC
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.
osv:CVE-2026-101087
Complete source record
{
"id": "cd2b9e8e1f0cb11a374c4940e74dd7c0bc67f6622cf9f8a9f3a90037dcd0fff6",
"url": "https://osv.dev/vulnerability/CVE-2026-101087",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Nezha 2.0.10 through 2.3.2 SSRF Denylist Bypass IPv6",
"summary": "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.",
"evidence": "osv:CVE-2026-101087",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-101087",
"aliases": [
"CVE-2026-101087",
"GHSA-jr2j-7hvh-h4q9"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "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"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/nezhahq/nezha",
"type": "GIT",
"events": [
{
"introduced": "43624792a3ddcf11e8cc5fcd4538fa28cae36fc8"
},
{
"fixed": "71d43c6a6e2c57784b1f744787bb6ee3475f3cbb"
},
{
"fixed": "d1fcde8e"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "2.0.10"
},
{
"fixed": "2.3.3"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "d1fcde8e"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-101087.json"
}
}
],
"modified": "2026-10-28T02:30:24.365492768Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/101xxx/CVE-2026-101087.json",
"https://github.com/nezhahq/nezha/security/advisories/GHSA-jr2j-7hvh-h4q9",
"https://nvd.nist.gov/vuln/detail/CVE-2026-101087",
"https://www.vulncheck.com/advisories/nezha-2.0.10-through-2.3.2-ssrf-denylist-bypass-ipv6",
"https://github.com/nezhahq/nezha/commit/d1fcde8e"
],
"provider_metadata": {
"cwe_ids": [
"CWE-918"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/101xxx/CVE-2026-101087.json"
}
},
"related_cves": [
{
"value": "CVE-2026-101087",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 491000,
"published_at": "2026-09-27T20:49:58.749+00:00"
}