<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 04 Oct 2026 08:44:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-30930 — Glances has SQL Injection via Process Names in TimescaleDB Export</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-30930</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; nicolargo glances&lt;/p&gt;
&lt;p&gt;Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.1, The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names. This vulnerability is fixed in 4.5.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; nicolargo glances&lt;/p&gt;
&lt;p&gt;Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.1, The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names. This vulnerability is fixed in 4.5.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-30930</guid>
    </item>
    <item>
      <title>GHSA-x46r-mf5g-xpr6 — Glances has SQL Injection via Process Names in TimescaleDB Export</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-x46r-mf5g-xpr6</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: Glances&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names.&lt;/p&gt;
&lt;p&gt;Root Cause: The normalize() function uses f&amp;#34;&amp;#39;{value}&amp;#39;&amp;#34; for string values without escaping single quotes within the value. The resulting strings are concatenated into INSERT queries via string formatting and executed directly with cur.execute() — no parameterized queries are used.&lt;/p&gt;
&lt;p&gt;#### Affected Code
- _File: glances/exports/glances_timescaledb/__init__.py, lines 79-93 (normalize function)_
```
def normalize(self, value):
    &amp;#34;&amp;#34;&amp;#34;Normalize the value to be exportable to TimescaleDB.&amp;#34;&amp;#34;&amp;#34;
    if value is None:
        return &amp;#39;NULL&amp;#39;
    if isinstance(value, bool):
        return str(value).upper()
    if isinstance(value, (list, tuple)):
        # Special case for list of one boolean
        if len(value) == 1 and isinstance(value[0], bool):
            return str(value[0]).upper()
        return &amp;#39;, &amp;#39;.join([f&amp;#34;&amp;#39;{v}&amp;#39;&amp;#34; for v in value])
    if isinstance(value, str):
        return f&amp;#34;&amp;#39;{value}&amp;#39;&amp;#34;  # &amp;lt;-- NO ESCAPING of single quotes within value&lt;/p&gt;
&lt;p&gt;return f&amp;#34;{value}&amp;#34;
```&lt;/p&gt;
&lt;p&gt;- _File: glances/exports/glances_timescaledb/__init__.py, lines 201-205 (query construction)_
```
# Insert the data
insert_list = [f&amp;#34;({…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: Glances&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names.&lt;/p&gt;
&lt;p&gt;Root Cause: The normalize() function uses f&amp;#34;&amp;#39;{value}&amp;#39;&amp;#34; for string values without escaping single quotes within the value. The resulting strings are concatenated into INSERT queries via string formatting and executed directly with cur.execute() — no parameterized queries are used.&lt;/p&gt;
&lt;p&gt;#### Affected Code
- _File: glances/exports/glances_timescaledb/__init__.py, lines 79-93 (normalize function)_
```
def normalize(self, value):
    &amp;#34;&amp;#34;&amp;#34;Normalize the value to be exportable to TimescaleDB.&amp;#34;&amp;#34;&amp;#34;
    if value is None:
        return &amp;#39;NULL&amp;#39;
    if isinstance(value, bool):
        return str(value).upper()
    if isinstance(value, (list, tuple)):
        # Special case for list of one boolean
        if len(value) == 1 and isinstance(value[0], bool):
            return str(value[0]).upper()
        return &amp;#39;, &amp;#39;.join([f&amp;#34;&amp;#39;{v}&amp;#39;&amp;#34; for v in value])
    if isinstance(value, str):
        return f&amp;#34;&amp;#39;{value}&amp;#39;&amp;#34;  # &amp;lt;-- NO ESCAPING of single quotes within value&lt;/p&gt;
&lt;p&gt;return f&amp;#34;{value}&amp;#34;
```&lt;/p&gt;
&lt;p&gt;- _File: glances/exports/glances_timescaledb/__init__.py, lines 201-205 (query construction)_
```
# Insert the data
insert_list = [f&amp;#34;({…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-x46r-mf5g-xpr6</guid>
    </item>
    <item>
      <title>PYSEC-2026-2165</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-2165</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: glances&lt;/p&gt;
&lt;p&gt;Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.1, The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names. This vulnerability is fixed in 4.5.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: glances&lt;/p&gt;
&lt;p&gt;Glances is an open-source system cross-platform monitoring tool. Prior to 4.5.1, The TimescaleDB export module constructs SQL queries using string concatenation with unsanitized system monitoring data. The normalize() method wraps string values in single quotes but does not escape embedded single quotes, making SQL injection trivial via attacker-controlled data such as process names, filesystem mount points, network interface names, or container names. This vulnerability is fixed in 4.5.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-2165</guid>
    </item>
  </channel>
</rss>
