PYSEC-2026-2170
Vulnerability from pysec - Published: 2026-03-18 18:16 - Updated: 2026-07-13 05:48Glances is an open-source system cross-platform monitoring tool. The GHSA-x46r fix (commit 39161f0) addressed SQL injection in the TimescaleDB export module by converting all SQL operations to use parameterized queries and psycopg.sql composable objects. However, the DuckDB export module (glances/exports/glances_duckdb/__init__.py) was not included in this fix and contains the same class of vulnerability: table names and column names derived from monitoring statistics are directly interpolated into SQL statements via f-strings. While DuckDB INSERT values already use parameterized queries (? placeholders), the DDL construction and table name references do not escape or parameterize identifier names. Version 4.5.3 provides a more complete fix.
| Name | purl | glances | pkg:pypi/glances |
|---|
{
"affected": [
{
"ecosystem_specific": {},
"package": {
"ecosystem": "PyPI",
"name": "glances",
"purl": "pkg:pypi/glances"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "4.5.2"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1.3.1",
"1.3.2",
"1.3.3",
"1.3.4",
"1.3.5",
"1.3.6",
"1.3.7",
"1.4",
"1.4.1",
"1.4.1.1",
"1.4.2",
"1.4.2.1",
"1.5",
"1.5.1",
"1.5.2",
"1.6",
"1.6.1",
"1.7",
"1.7.1",
"1.7.2",
"1.7.3",
"1.7.4",
"1.7.5",
"1.7.6",
"1.7.7",
"2.0",
"2.0.1",
"2.1",
"2.1.1",
"2.1.2",
"2.10",
"2.11",
"2.11.1",
"2.2",
"2.2.1",
"2.3",
"2.4",
"2.4.1",
"2.4.2",
"2.5",
"2.5.1",
"2.6",
"2.6.1",
"2.6.2",
"2.7",
"2.7.1",
"2.8",
"2.8.1",
"2.8.2",
"2.8.3",
"2.8.4",
"2.8.5",
"2.8.6",
"2.8.7",
"2.8.8",
"2.9.0",
"2.9.1",
"3.0",
"3.0.1",
"3.0.2",
"3.1.0",
"3.1.1",
"3.1.2",
"3.1.3",
"3.1.4",
"3.1.4.1",
"3.1.5",
"3.1.6",
"3.1.6.1",
"3.1.6.2",
"3.1.7",
"3.2.0",
"3.2.1",
"3.2.2",
"3.2.3",
"3.2.3.1",
"3.2.4",
"3.2.4.1",
"3.2.4.2",
"3.2.5",
"3.2.6.1",
"3.2.6.2",
"3.2.6.3",
"3.2.6.4",
"3.2.7",
"3.3.0",
"3.3.0.1",
"3.3.0.2",
"3.3.0.3",
"3.3.0.4",
"3.3.1",
"3.3.1.1",
"3.4.0",
"3.4.0.1",
"3.4.0.2",
"3.4.0.3",
"3.4.0.4",
"3.4.0.5",
"4.0.1",
"4.0.2",
"4.0.3",
"4.0.4",
"4.0.5",
"4.0.6",
"4.0.7",
"4.0.8",
"4.1.0",
"4.1.1",
"4.1.2",
"4.2.0",
"4.2.1",
"4.3.0",
"4.3.0.1",
"4.3.0.3",
"4.3.0.4",
"4.3.0.5",
"4.3.0.6",
"4.3.0.7",
"4.3.0.8",
"4.3.1",
"4.3.2",
"4.3.3",
"4.4.0",
"4.4.1",
"4.5.0",
"4.5.0.1",
"4.5.0.2",
"4.5.0.3",
"4.5.0.4",
"4.5.0.5",
"4.5.1"
]
}
],
"aliases": [
"CVE-2026-32611",
"GHSA-49g7-2ww7-3vf5"
],
"details": "Glances is an open-source system cross-platform monitoring tool. The GHSA-x46r fix (commit 39161f0) addressed SQL injection in the TimescaleDB export module by converting all SQL operations to use parameterized queries and `psycopg.sql` composable objects. However, the DuckDB export module (`glances/exports/glances_duckdb/__init__.py`) was not included in this fix and contains the same class of vulnerability: table names and column names derived from monitoring statistics are directly interpolated into SQL statements via f-strings. While DuckDB INSERT values already use parameterized queries (`?` placeholders), the DDL construction and table name references do not escape or parameterize identifier names. Version 4.5.3 provides a more complete fix.",
"id": "PYSEC-2026-2170",
"modified": "2026-07-13T05:48:56.307397Z",
"published": "2026-03-18T18:16:28.593Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/nicolargo/glances/releases/tag/v4.5.2"
},
{
"type": "FIX",
"url": "https://github.com/nicolargo/glances/commit/63b7da28895249d775202d639e5531ba63491a5c"
},
{
"type": "EVIDENCE",
"url": "https://github.com/nicolargo/glances/security/advisories/GHSA-49g7-2ww7-3vf5"
}
],
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N",
"type": "CVSS_V3"
}
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.