
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-6993 is a Confused Deputy (CWE-441) vulnerability in the go-kratos/kratos Go microservices framework, affecting all versions up to and including v2.9.2. The flaw exists in the NewServer() function within transport/http/server.go, where http.DefaultServeMux is set as the fallback handler for unmatched routes and disallowed HTTP methods. This allows unauthenticated remote attackers to access unintended handlers — most notably Go's net/http/pprof debug endpoints — that are silently registered on the global DefaultServeMux by side-effect imports. The vulnerability was disclosed on April 25, 2026, with a CVSS v3.1 score of 5.3 (Medium) and a CVSS v4.0 score of 5.5 (Medium) (Github Advisory, Feedly).
The root cause is that NewServer() in transport/http/server.go (lines 192–193) assigns http.DefaultServeMux as both srv.router.NotFoundHandler and srv.router.MethodNotAllowedHandler. Because http.DefaultServeMux is a global, shared Go instance, any package that registers handlers during init() — most notably net/http/pprof — inadvertently exposes those handlers through the Kratos HTTP server. When an HTTP request arrives for a path not registered in the Kratos router (e.g., /debug/pprof/), it falls through to DefaultServeMux, which serves the registered debug handlers without any authentication or authorization check. This is classified as CWE-441 (Unintended Proxy or Intermediary / 'Confused Deputy'), and a proof-of-concept demonstrating exploitation against Kratos v2.9.2 was publicly released alongside the disclosure (GitHub Issue #3810, Github Advisory).
Successful exploitation allows an unauthenticated remote attacker to access Go pprof debug endpoints exposed through the Kratos HTTP server, including /debug/pprof/cmdline (which may reveal secrets passed as command-line flags), /debug/pprof/heap (which may contain in-memory credentials, session tokens, or PII), /debug/pprof/goroutine (which exposes source code paths, dependency versions, and runtime state), and /debug/pprof/profile and /debug/pprof/trace (which reveal internal business logic and execution flow). Additionally, repeated requests to /debug/pprof/profile — which triggers a 30-second CPU profile by default — can be abused to cause denial of service. The impact is primarily a confidentiality breach with secondary availability risk; no integrity impact has been identified (GitHub Issue #3810).
A public proof-of-concept exploit consisting of simple curl commands was released alongside the vulnerability disclosure, making exploitation trivial for any attacker with network access to the target service. No authentication, privileges, or user interaction are required. The vulnerability is exploitable remotely over the network with low attack complexity, and is triggered only when the application's dependency tree includes a side-effect import of net/http/pprof (a common pattern in Go production services). The EPSS score is approximately 0.035–0.051%, indicating low but non-negligible exploitation probability. There is no evidence of active in-the-wild exploitation or CISA KEV catalog listing at this time (Github Advisory, Feedly).
curl http://target:8000/debug/pprof/A 200 OK response with an HTML profile listing confirms the vulnerability.curl http://target:8000/debug/pprof/cmdlinecurl "http://target:8000/debug/pprof/goroutine?debug=2"curl -s http://target:8000/debug/pprof/heap > heap.out
strings heap.out | grep -iE "password|secret|token|key"curl -o trace.out "http://target:8000/debug/pprof/trace?seconds=5"
go tool trace trace.outfor i in {1..10}; do curl http://target:8000/debug/pprof/profile & done(GitHub Issue #3810)/debug/pprof/, /debug/pprof/cmdline, /debug/pprof/heap, /debug/pprof/goroutine, /debug/pprof/profile, /debug/pprof/symbol, or /debug/pprof/trace on Kratos HTTP server ports (commonly 8000); these paths returning 200 OK on a Kratos service are anomalous.200 responses to /debug/pprof/* paths from external or unexpected source IPs; repeated requests to /debug/pprof/profile (indicating potential DoS abuse)./debug/pprof/profile, potentially indicating concurrent profiling abuse..out files (e.g., heap.out, trace.out) on attacker-controlled systems, though these would not appear on the victim server itself.The fix is identified as commit 0284a5bcf92b5a7ee015300ce3051baf7ae4718d, which replaces http.DefaultServeMux with http.NotFoundHandler() (returning 404) for NotFoundHandler and a simple 405 handler for MethodNotAllowedHandler. Organizations should upgrade to a version of go-kratos/kratos beyond v2.9.2 that includes this patch. As an immediate workaround for users who cannot upgrade, explicitly override the fallback handlers when creating the server using the NotFoundHandler() and MethodNotAllowedHandler() server options introduced in PR #3131. Additionally, ensure that net/http/pprof is not imported (even transitively) in production builds, or restrict access to debug endpoints via network-level controls such as firewalls or API gateways (GitHub PR #3814, Github Advisory).
The vulnerability was reported by community researcher 'August829' via GitHub Issue #3810 on April 4, 2026, with a detailed technical write-up including a proof-of-concept and suggested fix. A community contributor (Yanhu007) submitted PR #3814 on April 13, 2026, implementing the recommended safe defaults. The issue was labeled as a bug by the go-kratos maintainers. No major media coverage or broad social media discussion has been identified beyond standard CVE aggregator publications (GitHub Issue #3810, GitHub PR #3814).
Fix availability across major Linux distributions and their releases.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."