Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable endpoint requires low-privilege authentication (PR:L); nil channel deadlock causes full availability loss; no confidentiality or integrity impact applies.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
2DescriptionCVE.org
boringproxy through 0.10.0 contains a resource exhaustion vulnerability that allows any authenticated user to permanently exhaust server file descriptors, goroutines, and memory by sending requests to the GET /loading endpoint with attacker-supplied id query parameter values. Because the handler performs no map-lookup validity check and receives on a nil channel that blocks forever, with no timeout, no context cancellation, and no server-side reclamation due to absent HTTP server timeouts, each malicious request permanently holds one goroutine, one file descriptor, and approximately 50 kB of memory until the server's file descriptor limit is reached and listener Accept calls fail, halting all tunnel traffic forwarding for all users.
AnalysisAI
Resource exhaustion in boringproxy through 0.10.0 allows any authenticated user to permanently consume server file descriptors, goroutines, and memory by repeatedly requesting the GET /loading endpoint with arbitrary id parameter values. The handler blindly attempts to receive from a nil channel - a Go-language primitive that blocks forever - with no map-lookup validity check, no HTTP server timeouts, no context cancellation, and no runtime reclamation, meaning each malicious request permanently holds one goroutine (~50 kB stack), one file descriptor, and associated heap memory. Once the server's file descriptor limit is exhausted, all listener Accept calls fail and tunnel traffic forwarding halts for every connected user. A public proof-of-concept writeup exists on GitHub; no CISA KEV listing has been identified at time of analysis.
Technical ContextAI
boringproxy is a Go-based reverse tunnel proxy. The vulnerable component is the GET /loading HTTP handler, which accepts a user-supplied id query parameter intended to correlate with a pending in-flight request. The handler performs no validation of whether the id maps to an existing entry before executing a channel receive operation. In Go, receiving from a nil channel (<-nilChan) suspends the goroutine indefinitely with no possibility of resumption - it is not garbage-collected and cannot be unblocked by the Go runtime. This is classified under CWE-833 (Deadlock) because the goroutine enters a permanent waiting state. Compounding the flaw, the server is configured without Go http.Server read/write timeouts, meaning the underlying TCP connection (and its file descriptor) is never closed by the server side. The Go runtime does not reclaim goroutines blocked on nil channels through GC, making every malicious request a permanent resource leak until the process is restarted. Affected software is boringproxy version 0.10.0 and all prior releases.
RemediationAI
No vendor-released patch has been identified at time of analysis - the available references point only to a PoC writeup and a VulnCheck advisory, with no fixed version cited. Until a patch is released, operators should restrict authenticated access to the /loading endpoint at the network layer (firewall or upstream reverse proxy ACL) to the minimum necessary set of trusted users, reducing the pool of potential abusers. As a source-level workaround, operators capable of self-compiling can configure http.Server.ReadTimeout and WriteTimeout on the boringproxy HTTP server to enforce connection-level deadlines, which would unblock goroutines and trigger file descriptor reclamation - this requires modifying the Go source before building. Operators should also monitor server file descriptor consumption (e.g., via /proc/<pid>/fd count or ulimit -n headroom alerts) and set alerting thresholds to detect accumulation before service impact occurs. Restricting the number of concurrent authenticated sessions per user at the authentication layer can reduce amplification. Monitor the VulnCheck advisory and boringproxy upstream repository for a patched release.
Same weakness CWE-833 – Deadlock
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-53598
GHSA-5gjj-xq44-85r4