Fleet has an Access Control vulnerability in debug/pprof endpoints
Description
Fleet is open source device management software. A broken access control issue in versions prior to 4.78.3, 4.77.1, 4.76.2, 4.75.2, and 4.53.3 allowed authenticated users to access debug and profiling endpoints regardless of role. As a result, low-privilege users could view internal server diagnostics and trigger resource-intensive profiling operations. Fleet’s debug/pprof endpoints are accessible to any authenticated user regardless of role, including the lowest-privilege “Observer” role. This allows low-privilege users to access sensitive server internals, including runtime profiling data and in-memory application state, and to trigger CPU-intensive profiling operations that could lead to denial of service. Versions 4.78.3, 4.77.1, 4.76.2, 4.75.2, and 4.53.3 fix the issue. If an immediate upgrade is not possible, users should put the debug/pprof endpoints behind an IP allowlist as a workaround.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
github.com/fleetdm/fleetGo | >= 4.78.0, < 4.78.3 | 4.78.3 |
github.com/fleetdm/fleetGo | >= 4.77.0, < 4.77.1 | 4.77.1 |
github.com/fleetdm/fleetGo | >= 4.76.0, < 4.76.2 | 4.76.2 |
github.com/fleetdm/fleetGo | >= 4.75.0, < 4.75.2 | 4.75.2 |
github.com/fleetdm/fleet/v4Go | < 4.78.3-0.20260112221730-5c030e32a3a9 | 4.78.3-0.20260112221730-5c030e32a3a9 |
Affected products
1Patches
15c030e32a3a9Revise auth requirements for debug endpoints (#38173)
3 files changed · +37 −3
changes/pprof-tweaks+1 −0 added@@ -0,0 +1 @@ +* Revised auth requirements for /debug endpoints
server/service/debug_handler.go+1 −1 modified@@ -39,7 +39,7 @@ func (m *debugAuthenticationMiddleware) Middleware(next http.Handler) http.Handl return } - if !v.CanPerformActions() { + if !v.CanPerformActions() || v.User.GlobalRole == nil || *v.User.GlobalRole != fleet.RoleAdmin { http.Error(w, "Unauthorized", http.StatusForbidden) return }
server/service/debug_handler_test.go+35 −2 modified@@ -9,6 +9,7 @@ import ( "github.com/fleetdm/fleet/v4/server/config" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/fleetdm/fleet/v4/server/ptr" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) @@ -66,7 +67,39 @@ func TestDebugHandlerAuthenticationSessionInvalid(t *testing.T) { assert.Equal(t, http.StatusUnauthorized, res.Code) } -func TestDebugHandlerAuthenticationSuccess(t *testing.T) { +func TestDebugHandlerAuthenticationFailsDueToRole(t *testing.T) { + for test, user := range map[string]fleet.User{ + "no role": {}, + "global observer role": {GlobalRole: ptr.String(fleet.RoleObserver)}, + "global maintainer role": {GlobalRole: ptr.String(fleet.RoleMaintainer)}, + "non-global role": {Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 1, Name: "foo"}, Role: fleet.RoleAdmin}}}, + } { + t.Run(test, func(t *testing.T) { + svc := &mockService{} + svc.On( + "GetSessionByKey", + mock.Anything, + "fake_session_key", + ).Return(&fleet.Session{UserID: 42, ID: 1}, nil) + svc.On( + "UserUnauthorized", + mock.Anything, + uint(42), + ).Return(&user, nil) + + handler := MakeDebugHandler(svc, testConfig, nil, nil, nil) + + req := httptest.NewRequest(http.MethodGet, "https://fleetdm.com/debug/pprof/cmdline", nil) + req.Header.Add("Authorization", "BEARER fake_session_key") + res := httptest.NewRecorder() + + handler.ServeHTTP(res, req) + assert.Equal(t, http.StatusForbidden, res.Code) + }) + } +} + +func TestDebugHandlerAuthenticationSucceeds(t *testing.T) { svc := &mockService{} svc.On( "GetSessionByKey", @@ -77,7 +110,7 @@ func TestDebugHandlerAuthenticationSuccess(t *testing.T) { "UserUnauthorized", mock.Anything, uint(42), - ).Return(&fleet.User{}, nil) + ).Return(&fleet.User{GlobalRole: ptr.String(fleet.RoleAdmin)}, nil) handler := MakeDebugHandler(svc, testConfig, nil, nil, nil)
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-4r5r-ccr6-q6f6ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2026-23517ghsaADVISORY
- github.com/fleetdm/fleet/commit/5c030e32a3a9bc512355b5e1bf19636e4e6d0317ghsax_refsource_MISCWEB
- github.com/fleetdm/fleet/security/advisories/GHSA-4r5r-ccr6-q6f6ghsax_refsource_CONFIRMWEB
- pkg.go.dev/vuln/GO-2026-4334ghsaWEB
News mentions
0No linked articles in our index yet.