{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-101088",
        "assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
        "state": "PUBLISHED",
        "assignerShortName": "VulnCheck",
        "dateReserved": "2026-09-27T20:29:07.432Z",
        "datePublished": "2026-09-27T20:49:59.487Z",
        "dateUpdated": "2026-09-27T20:49:59.487Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
                "shortName": "VulnCheck",
                "dateUpdated": "2026-09-27T20:49:59.487Z"
            },
            "datePublic": "2026-08-01T00:00:00.000Z",
            "title": "Nezha before 2.3.1 Denial of Service via Concurrent Server Delete",
            "descriptions": [
                {
                    "lang": "en",
                    "value": "Nezha is a server and website monitoring tool. In versions >= 2.2.11 and < 2.3.1, the service sentinel worker (service/singleton/servicesentinel.go) contains an incomplete fix for a previously reported nil dereference denial of service (GHSA-qjpp-gffx-2wm9). The 2026-07-21 fix re-validated the service lifecycle under serviceResponseDataStoreLock but reused an already-captured, now stale reporter pointer and never re-validated the server, and that lock does not guard ServerShared. An authenticated user with the member role who owns an agent can issue a concurrent server delete (POST /api/v1/batch-delete/server) for their own server to win the race window, causing the worker to dereference a missing entry in the server list snapshot. Because the sentinel workers and the gRPC server have no recover()/recovery interceptor, the resulting panic is unrecovered and crashes the entire instance. This is fixed in version 2.3.1."
                }
            ],
            "problemTypes": [
                {
                    "descriptions": [
                        {
                            "lang": "en",
                            "description": "Time-of-check Time-of-use (TOCTOU) Race Condition",
                            "cweId": "CWE-367",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "vendor": "nezhahq",
                    "product": "nezha",
                    "defaultStatus": "unaffected",
                    "packageURL": "pkg:golang/github.com/nezhahq/nezha",
                    "versions": [
                        {
                            "version": "2.2.11",
                            "status": "affected",
                            "versionType": "semver",
                            "lessThan": "2.3.1"
                        },
                        {
                            "version": "2.3.1",
                            "status": "unaffected",
                            "versionType": "semver"
                        }
                    ]
                }
            ],
            "metrics": [
                {
                    "format": "CVSS",
                    "cvssV4_0": {
                        "version": "4.0",
                        "vectorString": "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",
                        "attackVector": "NETWORK",
                        "attackComplexity": "HIGH",
                        "attackRequirements": "PRESENT",
                        "privilegesRequired": "LOW",
                        "userInteraction": "NONE",
                        "vulnConfidentialityImpact": "NONE",
                        "vulnIntegrityImpact": "NONE",
                        "vulnAvailabilityImpact": "HIGH",
                        "subConfidentialityImpact": "NONE",
                        "subIntegrityImpact": "NONE",
                        "subAvailabilityImpact": "NONE",
                        "baseScore": 6,
                        "baseSeverity": "MEDIUM"
                    }
                },
                {
                    "format": "CVSS",
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H",
                        "attackVector": "NETWORK",
                        "attackComplexity": "HIGH",
                        "privilegesRequired": "LOW",
                        "userInteraction": "NONE",
                        "scope": "UNCHANGED",
                        "confidentialityImpact": "NONE",
                        "integrityImpact": "NONE",
                        "availabilityImpact": "HIGH",
                        "baseScore": 5.3,
                        "baseSeverity": "MEDIUM"
                    }
                }
            ],
            "references": [
                {
                    "url": "https://github.com/nezhahq/nezha/security/advisories/GHSA-jx78-55p5-rwv5",
                    "tags": [
                        "vendor-advisory"
                    ],
                    "name": "GitHub Security Advisory (GHSA-jx78-55p5-rwv5)"
                },
                {
                    "name": "VulnCheck Advisory: Nezha before 2.3.1 Denial of Service via Concurrent Server Delete",
                    "tags": [
                        "third-party-advisory"
                    ],
                    "url": "https://www.vulncheck.com/advisories/nezha-before-2.3.1-denial-of-service-via-concurrent-server-delete"
                }
            ],
            "credits": [
                {
                    "lang": "en",
                    "value": "arpitjain099",
                    "type": "reporter"
                }
            ],
            "x_generator": {
                "engine": "vulncheck-endgame"
            }
        }
    }
}