CVE-2026-46607: Glances Unsafe Pickle Deserialization Remote Code Execution
Glances, a popular open-source system monitoring tool, has a critical flaw in how it handles version-check data. When Glances starts up, it reads a cached version file from your user's home directory using a method that blindly trusts whatever data is in that file. An attacker who gains write access to that cache location—whether through a compromised container, shared system, or other local privilege—can sneak in malicious data that executes arbitrary commands as the user running Glances. This only happens if version checking is enabled, which is the default. The issue affects all versions before 4.5.5.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weaknesses (CWE)
- CWE-502
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-25 / 2026-06-25
NVD description (verbatim)
Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.5, glances/outdated.py uses pickle.load() to read a version-check cache file stored at a predictable, world-accessible path (~/.cache/glances/glances-version.db or $XDG_CACHE_HOME/glances/glances-version.db). No integrity check, signature verification, or format validation is performed before deserialization. An attacker with write access to that path — through any of several realistic local or container-level scenarios — can plant a malicious pickle file and achieve arbitrary code execution as the OS user running Glances the next time it starts with version checking enabled (the default). This vulnerability is fixed in 4.5.5.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
Glances versions prior to 4.5.5 contain an unsafe deserialization vulnerability in glances/outdated.py. The code invokes pickle.load() on a cache file located at ~/.cache/glances/glances-version.db (or $XDG_CACHE_HOME equivalent) without any integrity checks, cryptographic verification, or schema validation. The cache file path is predictable and often world-writable in multi-user or container environments. An attacker with local filesystem write access can place a crafted pickle object at this location. On the next invocation of Glances with version-check functionality enabled—the default configuration—the deserialization process executes embedded bytecode within the malicious pickle, yielding arbitrary code execution under the privileges of the Glances process owner. This is a classic unsafe deserialization vulnerability (CWE-502).
Business impact
Organizations deploying Glances for infrastructure monitoring face a straightforward privilege-escalation vector. In containerized environments (Docker, Kubernetes), a compromised application or sidecar can poison the version cache to escalate from app user to host or cluster access if Glances runs with elevated privileges. On shared multi-user systems, any lower-privileged user can corrupt the cache to compromise higher-privileged monitoring jobs. Cloud platforms and CI/CD pipelines using Glances for diagnostics become potential pivot points. The default-enabled version checking means most installations are at risk unless explicitly disabled.
Affected systems
Glances versions before 4.5.5 are vulnerable. The threat surface includes: any Linux, macOS, or Windows system running Glances for local or remote monitoring; containerized workloads using Glances as a monitoring or diagnostic tool; shared hosting or multi-tenant environments; CI/CD pipelines that invoke Glances during build or test phases. Systems where version checking has been manually disabled are not vulnerable to this specific attack path. Verify your installed version with 'glances --version'; upgrades to 4.5.5 or later eliminate the risk.
Exploitability
Exploitability is practical and local in scope. The attacker must have write access to the cache directory, which is typically achievable through: container escape or misconfiguration; local user compromise; shared filesystem vulnerabilities; temporary file race conditions; or overly permissive directory ownership. No network traversal, authentication bypass, or complex user interaction is required. Once the malicious pickle is in place, exploitation is automatic and reliable on the next Glances invocation. The default-enabled version checking ensures that most instances will attempt deserialization without additional user action.
Remediation
The immediate fix is to upgrade Glances to version 4.5.5 or later, which eliminates the unsafe deserialization. As a short-term mitigation, users can disable version checking (typically via configuration flag or environment variable) to prevent the vulnerable code path from executing, though this forgoes the version-check feature. In high-security environments, restrict filesystem permissions on ~/.cache/glances to prevent unauthorized writes. Monitor for signs of cache directory tampering or unexpected process spawning from Glances invocations.
Patch guidance
Upgrade Glances to version 4.5.5 or later. The fix removes the unsafe pickle.load() call and replaces it with safer deserialization or removes the caching mechanism entirely; consult the official Glances release notes for the exact implementation. Package managers (pip, apt, brew, etc.) should all have the patched version available shortly after publication. In containerized deployments, rebuild and redeploy images with the new version. For systems unable to patch immediately, disable the version-check feature via configuration to close the exploitation vector.
Detection guidance
Look for unexpected child processes spawned from Glances or unusual system commands executed under the Glances user's context, especially on startup. Monitor filesystem access to ~/.cache/glances/glances-version.db for modifications by unexpected accounts. Audit file permissions on the cache directory for overly broad write access. In container orchestration, check for Glances pods restarting or exhibiting abnormal behavior after cache directory modifications. Review process execution logs around Glances startup events for anomalous commands. Integrity monitoring on the cache file itself (e.g., via inotify or auditd) can catch tampering in real time.
Why prioritize this
This vulnerability merits immediate attention due to its combination of high CVSS impact (7.8), default-enabled exploitation pathway, and ease of triggering. In containerized and multi-user environments, write-access to the cache directory is often trivial to obtain, making the gap between discovery and reliable code execution very small. The arbitrary code execution capability and low complexity of the attack justify prioritizing patching ahead of many other vulnerabilities. Organizations running Glances in production monitoring roles should treat this as critical.
Risk score, explained
The CVSS 3.1 score of 7.8 (HIGH) reflects: local attack vector (AV:L) appropriate to the cache-file mechanism; low attack complexity (AC:L) because no special conditions or race conditions are needed; low privileges required (PR:L) indicating a standard local user can mount the attack; no user interaction (UI:N) because exploitation is automatic; and confidentiality, integrity, and availability all set to high (C:H/I:H/A:H) reflecting complete code execution. The score does not account for the default-enabled configuration and ease of cache-directory compromise in many real-world deployments, so actual organizational risk may be higher.
Frequently asked questions
Is this vulnerability exploitable remotely?
No. The vulnerability requires local filesystem write access to a user's home directory cache. However, in containerized environments, privilege escalation from a compromised container to the host or to other containers running Glances is possible, which can feel like a lateral move. Network-based remote exploitation is not feasible.
I have version checking disabled. Am I affected?
No. The vulnerability specifically lies in the version-check code path. If you have explicitly disabled version checking in your Glances configuration, the vulnerable pickle.load() call is not invoked, and you are not at risk from this particular flaw. However, you should still upgrade to 4.5.5 for overall security and to enable version checking safely.
What is pickle and why is it dangerous here?
Pickle is Python's native serialization format. Unlike JSON or other text formats, pickle can embed and execute arbitrary Python bytecode during deserialization, making it unsafe for untrusted data. In Glances' case, the cache file is treated as trusted, but an attacker with write access can replace it with a malicious pickle, triggering code execution on load. This is why pickle should only be used for data you fully control.
Does upgrading to 4.5.5 require any configuration changes?
No. The upgrade is a drop-in replacement. The patched version maintains backward compatibility and re-enables safe version checking. Simply install version 4.5.5 or later and restart Glances. No configuration migration or manual steps are necessary.
This analysis is based on the CVE record and description as of the publication date. Security conditions and patch availability may change. Always verify patch status and version numbers directly with the official Glances project repository and release notes. SEC.co makes no guarantee regarding exploitability in specific environments; testing should be conducted in isolation before production deployment. Consult your organization's change management and patching policies before applying updates. Source: NVD (public-domain), retrieved 2026-08-03. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2025-11993HIGHWooCommerce Infinite Scroll Plugin PHP Object Injection – HIGH Severity
- CVE-2025-27511HIGHGeoServer DB2 JNDI Injection Remote Code Execution
- CVE-2025-69130HIGHPHP Object Injection in Entrepreneur WordPress Booking Theme ≤3.1.3
- CVE-2025-71339HIGHPicklescan Gadget Bypass Allows Arbitrary Code Execution
- CVE-2025-71341HIGHPicklescan Bypass Enables Remote Code Execution via profile.Profile.runctx
- CVE-2025-71344HIGHpicklescan RCE via Undetected ensurepip._run_pip
- CVE-2025-71348HIGHpicklescan Detection Evasion in Torch Config Loading
- CVE-2025-71354HIGHpicklescan Gadget Detection Bypass Leading to RCE