脆弱性・CVE速報深刻度: 緊急

pgAdmin 4 の Import/Export Data で OS コマンドを実行できる不具合(CVE-2026-116241): 9.19 で修正

目次(5)

CVE-2026-116241

pgAdmin 4 の Import/Export Data ツールに、OS コマンド実行につながる不具合 CVE-2026-116241 が公開されました(GitHub Advisory は 10/30 公開)。GitHub Advisory の深刻度は Critical、CWE-78 です。GitHub 提供の CVSS は v3.1 が 9.9、v4.0 が 9.4 です。対象は 9.19 より前の版で、修正版は 9.19 です。CISA の KEV には載っていません。EPSS は公開直後のため未算出です。

何が起きるか

  • Import/Export Data ツールは、利用者が書いたクエリの結果を書き出すとき、そのクエリを psql の \copy (...) TO コマンドで包みます。pgAdmin は、括弧の対応を調べて、クエリが包みの外へ出られないことを確かめています。
  • 勧告によると、この確認は、単一引用符の文字列の中にあるバックスラッシュは拒否していましたが、二重引用符で囲んだ識別子の中のバックスラッシュは拒否していませんでした。
  • standard_conforming_strings が off の接続では、psql はバックスラッシュ付きの二重引用符を「引用符の終わりではない」と読みます。pgAdmin 側は終わりと読むため、双方の解釈がずれ、pgAdmin が見逃した閉じ括弧で \copy (...) の包みが終わり、続く TO PROGRAM が実行され得ます。
  • TO PROGRAM は psql が pgAdmin のあるホスト上で実行するため、データベースサーバーがその文を後から拒否しても、コマンドはすでに走っています。実行ユーザーは pgAdmin を動かしている OS アカウントです。
  • 通常の PostgreSQL ロールは自分の接続で standard_conforming_strings を off にでき、Import/Export Data の権限は管理者以外にも標準で付与されます。勧告は、特別な権限がなくても成立する、としています。
  • この不具合は、以前の CVE-2026-17566 の修正を回避するものだと勧告は述べています。

修正の内容

  • 修正コミットを確認しました。_is_query_parens_balanced() が、二重引用符の識別子の中でバックスラッシュを見つけたら、クエリを拒否するようにした内容で、単一引用符の文字列に対する扱いに揃えています。
  • 回帰テストとして、"a\\"b"c) TO PROGRAM ... 形のクエリを拒否することと、識別子内のバックスラッシュを拒否すること、二重引用符を重ねた識別子は通ることが加わっています。
  • PyPI の記録では、pgadmin4 9.19 は 2026-10-29(UTC)に公開されています。修正コミットの日付は 10/24(UTC)です。

影響を受ける版と条件

  • 対象は pgAdmin 4 の 9.19 より前の版です。修正版は 9.19 です。
  • 悪用には、pgAdmin に Import/Export Data の権限を持つアカウントでログインできること、そのアカウントの接続先に対し standard_conforming_strings を off にできることが要ります。サーバーモードで複数の利用者に公開している環境ほど影響が大きくなります。この「公開環境ほど大きい」は本記事の推定です。

対応

  1. pgAdmin 4 を 9.19 以上に更新します。
  2. 更新できない間は、Import/Export Data の権限を信頼できる利用者に限ります。この権限の見直しは本記事の推定で、勧告が示す回避策ではありません。
  3. pgAdmin を動かす OS アカウントの権限を最小にし、そのホストから外へ出る通信を絞ります。
  4. pgAdmin のホストで、心当たりのないプロセス起動がないかを確認します。

未確認の点

  • NVD は 10/30 に登録され、状態は Received です。NVD 自身の評価は未確認で、上の CVSS は GitHub 提供の値です。
  • 悪用の報告は見つかっていません(KEV 掲載なし)。EPSS は未算出で、今後の値が変わり得ます。
  • 実際の環境での再現は確認していません。記載は勧告、修正コミット、公開情報に基づきます。

この記事について

出典

この記事を共有