Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconOperator sets cors_origins=*,https://trusted with cors_credentials=true
-
DeliveryVictim authenticates to Glances REST API in browser
-
ExploitAttacker lures victim to malicious webpage
-
InstallPage issues credentialed cross-origin XHR to Glances API
-
C2Starlette reflects Origin header with Allow-Credentials: true
-
ExecuteAttacker script reads full API response
-
ImpactSensitive system monitoring data exfiltrated
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration CORS policy restriction
|
| Exploitation Conditions | Three simultaneous conditions must hold: (1) The Glances REST API web server must be running and network-accessible to the attacker's origin. (2) The operator must have configured a non-default combination in glances.conf: cors_credentials=true AND a cors_origins value that is a multi-entry list explicitly containing '*' alongside at least one other origin - for example, cors_origins=*,https://trusted.example.com. The single-entry wildcard configuration (cors_origins=*) is NOT vulnerable, as it correctly triggers the old guard. (3) A victim user must have cached HTTP Basic Auth credentials for the Glances instance in their browser and must actively visit an attacker-controlled webpage during that session. Exploitation is strictly limited to confidentiality - read-only exfiltration of REST API data. No integrity or availability impact is possible via this vector. The misconfigured cors_credentials+wildcard combination is not present in default Glances installations. |
| Impact | The NVD-assigned CVSS 6.5 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N) reflects unauthenticated network access with user interaction required and high confidentiality impact, which is directionally correct. However, AC:L may overstate exploitability: the vulnerability only manifests when an operator has deliberately configured a non-default combination of cors_credentials=True and a multi-entry cors_origins list containing the wildcard - a specific misconfiguration that is atypical and would not be present in default Glances deployments. A case for AC:H exists on these grounds. Real-world risk is further constrained by the browser-based attack model: a victim must visit an attacker-controlled page while holding cached HTTP Basic Auth credentials to the Glances instance. No CISA KEV listing means confirmed mass exploitation is absent. EPSS data was not provided; given the narrow configuration prerequisite and the niche deployment footprint of Glances, EPSS would likely be low. The public GHSA advisory contains a working PoC (curl-based demonstration), which slightly elevates opportunistic risk but does not constitute active exploitation evidence. Impact is strictly read-only data exfiltration - no integrity or availability risk. |
| Exploit ScenarioDerived | An attacker registers a malicious domain and embeds a JavaScript payload that issues a credentialed cross-origin fetch to the victim's Glances REST API endpoint (e.g., http://monitor.internal:61208/api/4/processlist). When a Glances user who has previously authenticated via HTTP Basic Auth visits the attacker's page in the same browser, the browser automatically includes cached credentials in the cross-origin request; because Starlette reflects the wildcard-origin configuration with Access-Control-Allow-Credentials: true, the browser returns the full API response to the attacker's script, exposing process lists, system stats, and command-line arguments. A proof-of-concept demonstrating the credential reflection behavior is publicly available in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 17, 2026
Glances REST API prior to 4.5.6 exposes authenticated system monitoring data to untrusted cross-origin websites due to a logic error in the CORS credentials guard: the exact-equality check (cors_origins == ["*"]) fails to catch multi-entry origin lists that contain the wildcard alongside other origins, while Starlette's CORSMiddleware still treats any such list as 'allow all origins' and reflects credentials. Any website visited by an authenticated Glances user can read sensitive REST API data - including full process lists with command-line arguments - by triggering the browser's automatic replay of cached HTTP Basic Auth credentials in a cross-origin request. A proof-of-concept is publicly embedded in the GHSA advisory; no confirmed active exploitation (not in CISA KEV) has been observed at time of analysis.
RemediationAI
Upgrade Glances to version 4.5.6 or later via pip (pip install --upgrade glances); the fixed release is available at https://github.com/nicolargo/glances/releases/tag/v4.5.6 and the correcting commit is 890858944ab9d03730ec6b1ba42d4015e6d85db5. If immediate upgrade is not possible, two compensating controls independently eliminate the vulnerable condition: set cors_credentials=False in the [outputs] section of glances.conf (disables authenticated CORS, may break legitimate cross-origin dashboard clients relying on Basic Auth), or remove the wildcard '*' from cors_origins entirely and list only explicitly trusted origins (preferred, as it also removes the CORS policy overreach). Administrators should audit glances.conf for any [outputs] block combining cors_credentials=true with a cors_origins value containing '*' - that exact combination is the exploitable state. The full advisory is at https://github.com/nicolargo/glances/security/advisories/GHSA-fp27-88fp-2phg.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Glances exposes a FastAPI/Starlette-based REST API and includes a documented safety guarantee that cors_credentials=True cannot be combined with an unrestricted wildcard origin allowlist. The guard in glances/outputs/glances_restful_api.py:298 implemented this as cors_origins == ["*"] - exact list equality - but Starlette's CORSMiddleware uses a membership test ("*" in allow_origins) to determine wildcard behavior. Any multi-entry configuration such as cors_origins=*,https://trusted.example.com parses to a list like ["*", "https://trusted.example.com"], which fails the exact-equality guard but is still treated by Starlette as 'allow all origins,' resulting in credentialed CORS responses being reflected to arbitrary Origins with no warning logged. CWE-942 (Permissive Cross-domain Policy with Untrusted Domains) precisely describes the root cause: the policy incorrectly permits cross-domain interaction with untrusted parties. The identical bug shape was previously corrected for the sibling XML-RPC server in glances/server.py (CVE-2026-46608, which uses the correct if "*" in cors_origins: form), but the REST API path was never updated to match. CPE cpe:2.3:a:nicolargo:glances:*:*:*:*:*:*:*:* covers all affected versions distributed via pip.
Know when Glances gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
AC:H because exploitation requires a non-default operator misconfiguration beyond attacker control; all other metrics align with the browser-based credential-reflection attack model.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.6, the cors_origins guard in glances/outputs/glances_restful_api.py uses exact list equality instead of wildcard membership, allowing a multi-origin list containing the wildcard to retain cors_credentials and expose authenticated REST API data to an untrusted website visited by a previously authenticated user. This issue is fixed in 4.5.6.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The package glances before 3.2.1 are vulnerable to XML External Entity (XXE) Injection via the use of Fault to parse unt
Command injection in Glances prior to 4.5.6 allows a local unprivileged user to execute arbitrary shell commands when ad
Glances is an open-source system cross-platform monitoring tool. versions up to 4.5.1 is affected by information exposur
Command injection in Glances system monitoring (versions 4.5.2 through 4.5.5) allows a local attacker with process-execu
Cross-origin data exfiltration in Glances web server allows remote unauthenticated attackers to read sensitive system in
Server-Side Request Forgery in Glances IP plugin allows authenticated attackers to force the monitoring application to s
SQL injection in Glances TimescaleDB export module allows local attackers to execute arbitrary SQL commands against the
Glances versions through 4.5.5 contain an incomplete fix for CVE-2026-53925: the `--disable-config-exec` flag correctly
Cassandra export module in Glances prior to version 4.5.4 allows local privilege-escalated users to redirect monitoring
Credential disclosure in Glances prior to 4.5.6 allows unauthenticated remote attackers to retrieve plaintext usernames
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
EUVD-2026-60301
GHSA-fp27-88fp-2phg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB