【活用ガイド】

JVNDB-2026-027066

pgAdmin ProjectのpgAdmin 4におけるSQL インジェクションの脆弱性

概要

pgAdmin 4 バージョン9.16におけるCVE-2026-12044の修正は、qtLiteralの強化および16個のCOMMENT ON / pgstattuple / pgstatindexテンプレートへの切り替えを行いましたが、test_sql_string_literal_lint.pyのALLOWLISTに誤って含まれていたいくつかのシンクを見落としていました。その誤った前提とは、ブラウザツリーを介してpg_catalogから取得されるスキーマ名、テーブル名、パブリケーション名、およびサブスクリプション名にアポストロフィが含まれないというものでした。PostgreSQLは引用識別子に任意の文字を許可しているため、CREATE TABLE、CREATE PUBLICATION、CREATE SUBSCRIPTION権限を持つ低権限ユーザーがアポストロフィを含むオブジェクト名を作成可能です。その結果、任意のユーザー(より高権限のユーザーを含む)が当該オブジェクトのStatisticsまたはDependenciesタブを開いた瞬間に、エスケープされていない'{{ name }}'テンプレート補間を突破し、閲覧ユーザーのデータベースセッション内で任意のSQL文をインジェクションできてしまいます。影響を受けるシンクは、すべてのインデックス統計一覧のためのIndex Statisticsクエリ(coll_stats.sqlの16_plusおよびデフォルトのPostgreSQLバージョンテンプレートの両変種。これはCVE-2026-12044で既に修正された単一インデックスstats.sqlパスとは異なります)およびパブリケーションとサブスクリプションのdependencies.sql / get_position.sqlテンプレート(パブリケーション用のpgおよびppas/EPAS方言の両方)です。修正では、これらすべてのテンプレートを名前補間のためにqtLiteral(conn)に切り替え、publications/__init__.pyとsubscriptions/__init__.pyを更新してdependencies.sqlのrender_template呼び出し時にconn=self.connを渡し、qtLiteralフィルターが引用対象の接続情報を持つようにしました。これにより、これらのシンクは適切にエスケープされるため、test_sql_string_literal_lint.py内の対応するALLOWLISTエントリは削除されています。動作回帰テストでは、各修正テンプレートをスタック文アポストロフィペイロードでレンダリングし、オブジェクト名がqtLiteralで正確にエスケープされて表示され、かつレンダリングされたSQLが正確に1つの文として解析可能であることをアサートしています。パッチ適用前の生の補間形式ではこのアサートが実際に失敗することも検証しています。本問題はpgAdmin 4のIndex Statisticsシンク(バージョン1.0から)およびPublications/Subscriptionsシンク(バージョン5.0から)に影響し、両者ともバージョン9.17より前に存在しています。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 8.8 (重要) [その他]
  • 攻撃元区分: ネットワーク
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


pgAdmin Project
  • pgAdmin 4 1.0 以上 9.17 未満

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
・当該ソフトウェアが完全に停止する可能性があります。
対策

ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

GitHub
CWEによる脆弱性タイプ一覧  CWEとは?

  1. SQLインジェクション(CWE-89) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-17346
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-17346
  2. 関連文書 : test(security): behavioral regression test for name-literal SQL escaping  pgadmin-org/pgadmin4@f75452b  GitHub
  3. 関連文書 : fix(security): escape index-stats/publication/subscription name sinks…  pgadmin-org/pgadmin4@73b3218  GitHub
更新履歴

  • [2026年08月06日]
      掲載