{"id":"CVE-2026-53522","revision":"1188ab56710b4116b1bf883dea552637","records":[{"revision":"1188ab56710b4116b1bf883dea552637","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-53522","aliases":[],"title":"Nezha Monitoring: Unbounded WebSocket Streams — Resource Exhaustion DoS","description":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 1.0.0 to before version 2.2.0, the Nezha dashboard exposes two endpoints that create long-lived WebSocket streams to monitored agents: POST /api/v1/terminal → createTerminal() (terminal.go:27-67) and POST /api/v1/file → createFM() (fm.go:28-67). Both call rpc.NezhaHandlerSingleton.CreateStream(streamId, ...) which inserts a new ioStreamContext into an unbounded map[string]*ioStreamContext (s.ioStreams in io_stream.go:59-67). There is no per-user rate limit, no global semaphore, and no per-server connection cap. This issue has been patched in version 2.2.0.","state":0,"publishedAt":"2026-06-12T21:04:38.357+00:00","modifiedAt":"2026-06-15T19:27:20.84+00:00","affected":[{"ecosystem":"Vendor product","name":"nezha","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"nezhahq\",\n                    \"product\": \"nezha\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 1.0.0, < 2.2.0\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-jg62-j5h6-8mpq"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-53522","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-53522","identifiers":["CVE-2026-53522"]},"retained":false,"historicalAffected":[]}],"coverage":[]}