<?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://db.gcve.eu</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>Mon, 28 Sep 2026 11:39:12 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-8462</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-8462</link>
      <description>&lt;p&gt;SQL injection in ClickHouse-backed meter definitions in OpenMeter OpenMeter before v1.0.0-beta.228 on all platforms allows a remote unauthenticated attacker to access or modify metering event data, and potentially cause denial of service, via crafted user-controlled JSONPath values submitted to meters API.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;SQL injection in ClickHouse-backed meter definitions in OpenMeter OpenMeter before v1.0.0-beta.228 on all platforms allows a remote unauthenticated attacker to access or modify metering event data, and potentially cause denial of service, via crafted user-controlled JSONPath values submitted to meters API.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-8462</guid>
    </item>
    <item>
      <title>GHSA-wc3v-3457-c8cm — OpenMeter: SQL injection through meter creation</title>
      <link>https://db.gcve.eu/vuln/ghsa-wc3v-3457-c8cm</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/openmeterio/openmeter&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;An authenticated tenant can inject arbitrary SQL through the `valueProperty` or `groupBy` fields of `POST /api/v1/meters`. The injection passes the application&amp;#39;s JSONPath validation check and executes against the shared ClickHouse database, which contains event data for all tenants with no row-level security. Any authenticated tenant can read or write every other tenant&amp;#39;s metering data.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`openmeter/streaming/clickhouse/utils_query.go:15` builds a ClickHouse `SELECT` by interpolating user input with `fmt.Sprintf`:&lt;/p&gt;
&lt;p&gt;```go
sb.Select(fmt.Sprintf(&amp;#34;JSON_VALUE(&amp;#39;{}&amp;#39;, &amp;#39;%s&amp;#39;)&amp;#34;, sqlbuilder.Escape(d.jsonPath)))
```&lt;/p&gt;
&lt;p&gt;`sqlbuilder.Escape()` (go-sqlbuilder v1.40.2) only replaces `$` → `$$` to prevent collisions with the library&amp;#39;s own argument placeholders. It does not escape single quotes. A single quote in the input closes the string literal, and subsequent tokens execute as raw SQL. `sb.Build()` always returns an empty `args` slice — the query is never parameterized.&lt;/p&gt;
&lt;p&gt;The payload must be prefixed with a valid JSONPath expression (e.g. `$.foo`) because ClickHouse raises error code 36 (BAD_ARGUMENTS) on an empty JSONPath string, which `ValidateJSONPath` silently treats as &amp;#34;invalid JSONPath&amp;#34; and returns early — before the injected branch can execute.&lt;/p&gt;
&lt;p&gt;Working payload:
```
$.foo&amp;#39;) UNION ALL SELECT toString(sleep(3)) FROM system.one --
```&lt;/p&gt;
&lt;p&gt;Generated SQL:
```sql
SELECT JSON_VALUE(&amp;#39;{}&amp;#39;, &amp;#39;$.foo&amp;#39;) UNION ALL SELECT toString(sleep(3)) FROM system.one --&amp;#39;
```&lt;/p&gt;
&lt;p&gt;Fix — replace…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/openmeterio/openmeter&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;An authenticated tenant can inject arbitrary SQL through the `valueProperty` or `groupBy` fields of `POST /api/v1/meters`. The injection passes the application&amp;#39;s JSONPath validation check and executes against the shared ClickHouse database, which contains event data for all tenants with no row-level security. Any authenticated tenant can read or write every other tenant&amp;#39;s metering data.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`openmeter/streaming/clickhouse/utils_query.go:15` builds a ClickHouse `SELECT` by interpolating user input with `fmt.Sprintf`:&lt;/p&gt;
&lt;p&gt;```go
sb.Select(fmt.Sprintf(&amp;#34;JSON_VALUE(&amp;#39;{}&amp;#39;, &amp;#39;%s&amp;#39;)&amp;#34;, sqlbuilder.Escape(d.jsonPath)))
```&lt;/p&gt;
&lt;p&gt;`sqlbuilder.Escape()` (go-sqlbuilder v1.40.2) only replaces `$` → `$$` to prevent collisions with the library&amp;#39;s own argument placeholders. It does not escape single quotes. A single quote in the input closes the string literal, and subsequent tokens execute as raw SQL. `sb.Build()` always returns an empty `args` slice — the query is never parameterized.&lt;/p&gt;
&lt;p&gt;The payload must be prefixed with a valid JSONPath expression (e.g. `$.foo`) because ClickHouse raises error code 36 (BAD_ARGUMENTS) on an empty JSONPath string, which `ValidateJSONPath` silently treats as &amp;#34;invalid JSONPath&amp;#34; and returns early — before the injected branch can execute.&lt;/p&gt;
&lt;p&gt;Working payload:
```
$.foo&amp;#39;) UNION ALL SELECT toString(sleep(3)) FROM system.one --
```&lt;/p&gt;
&lt;p&gt;Generated SQL:
```sql
SELECT JSON_VALUE(&amp;#39;{}&amp;#39;, &amp;#39;$.foo&amp;#39;) UNION ALL SELECT toString(sleep(3)) FROM system.one --&amp;#39;
```&lt;/p&gt;
&lt;p&gt;Fix — replace…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-wc3v-3457-c8cm</guid>
    </item>
  </channel>
</rss>
