<?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 10:26:29 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-17346 — pgAdmin 4: SQL injection via unescaped object names in index Statistics and publication/subscription dependency views (…</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-17346</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pgadmin.org pgAdmin 4&lt;/p&gt;
&lt;p&gt;The fix for CVE-2026-12044 in pgAdmin 4 9.16 hardened qtLiteral and switched sixteen COMMENT ON / pgstattuple / pgstatindex templates to it, but missed several sinks that had been placed in test_sql_string_literal_lint.py&amp;#39;s ALLOWLIST on the incorrect assumption that schema, table, publication, and subscription names sourced from pg_catalog via the browser tree could never contain an apostrophe. PostgreSQL permits arbitrary characters in quoted identifiers, so a low-privileged user able to CREATE TABLE, CREATE PUBLICATION, or CREATE SUBSCRIPTION can plant an apostrophe&amp;#39;d object name that breaks out of the unescaped &amp;#39;{{ name }}&amp;#39; template interpolation the moment any user (including a higher-privileged one) opens that object&amp;#39;s Statistics or Dependencies tab, allowing arbitrary SQL statement injection in the viewing user&amp;#39;s database session.&lt;/p&gt;
&lt;p&gt;Affected sinks: the Index Statistics query for all-indexes listing (coll_stats.sql, both the 16_plus and default PostgreSQL-version template variants -- distinct from the single-index stats.sql path already fixed in CVE-2026-12044), and the publication and subscription dependencies.sql / get_position.sql templates (both the pg and ppas/EPAS dialect variants for publications).&lt;/p&gt;
&lt;p&gt;Fix switches all of these templates to qtLiteral(conn) for name interpolation, and updates publications/__init__.py and subscriptions/__init__.py to pass conn=self.conn into the dependencies.sql render_template call so the qtLiteral filter has a connection to quote aga…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pgadmin.org pgAdmin 4&lt;/p&gt;
&lt;p&gt;The fix for CVE-2026-12044 in pgAdmin 4 9.16 hardened qtLiteral and switched sixteen COMMENT ON / pgstattuple / pgstatindex templates to it, but missed several sinks that had been placed in test_sql_string_literal_lint.py&amp;#39;s ALLOWLIST on the incorrect assumption that schema, table, publication, and subscription names sourced from pg_catalog via the browser tree could never contain an apostrophe. PostgreSQL permits arbitrary characters in quoted identifiers, so a low-privileged user able to CREATE TABLE, CREATE PUBLICATION, or CREATE SUBSCRIPTION can plant an apostrophe&amp;#39;d object name that breaks out of the unescaped &amp;#39;{{ name }}&amp;#39; template interpolation the moment any user (including a higher-privileged one) opens that object&amp;#39;s Statistics or Dependencies tab, allowing arbitrary SQL statement injection in the viewing user&amp;#39;s database session.&lt;/p&gt;
&lt;p&gt;Affected sinks: the Index Statistics query for all-indexes listing (coll_stats.sql, both the 16_plus and default PostgreSQL-version template variants -- distinct from the single-index stats.sql path already fixed in CVE-2026-12044), and the publication and subscription dependencies.sql / get_position.sql templates (both the pg and ppas/EPAS dialect variants for publications).&lt;/p&gt;
&lt;p&gt;Fix switches all of these templates to qtLiteral(conn) for name interpolation, and updates publications/__init__.py and subscriptions/__init__.py to pass conn=self.conn into the dependencies.sql render_template call so the qtLiteral filter has a connection to quote aga…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-17346</guid>
    </item>
  </channel>
</rss>
