本文へスキップ
MameTechNews
バックエンド

pgAdmin 4 v9.19、ホストでコマンド実行できる欠陥など15件を修正

## POINTS

  • クエリのエクスポートからTO PROGRAMで、ホストの任意コマンドを実行できた抜け道を塞いだ。
  • サーバーモードの接続サービスは、許可リストが空のままだと更新後に接続できなくなる。
  • Password Execの既存コマンドは、許可リストと完全一致しないと初回起動で消え、戻せない。

何が起きたか

pgAdmin 4 v9.19は2026年10月29日に公開された。Import/Export Dataのクエリエクスポートは、括弧の対応を見て\copyの外へ制御が漏れないようにしていたが、二重引用符の識別子の中のバックスラッシュを見落としていた。standard_conforming_stringsがオフのとき、psqlはこれをエスケープとみなす。その結果、TO PROGRAMがpgAdminのホスト上で任意のコマンドを実行できた。CVE-2026-116241で、CVE-2026-17566の修正の抜け道だ。

同じリリースはCVE-2026-116238から116252を塞ぐ。LDAPやKerberosで、同じユーザー名の別アカウント、初期管理者を含む、へログインできる問題がある。サーバーモードでは、pgAdminを動かしているアカウントのパスワードファイル、クライアント証明書、SSH鍵、Kerberos資格情報が、他の利用者から使われ得た。非管理者がサーバーを全員へ共有できる問題も含まれる。

なぜ今重要か

チームで1つのpgAdminをサーバーモードとして公開していると、ログインできる人がホストのコマンドや、サービスアカウントの鍵に届き得た。デスクトップモードでも、Windowsではシンボリックリンクの競合が残るとリリースノートは書いている。ファイルを開く修正の一部は、POSIXのサーバーモードに限られる。

エンジニアが取ること

公開しているサーバーモードは9.19へ上げる。接続サービスはSERVER_MODE_ALLOWED_SERVICESが空だと接続できなくなるので、全員で使うものだけを更新前に書く。自由記述のPassword Exec Commandは実行されなくなり、許可リストと完全一致しない既存コマンドは初回起動で消える。これは戻せない。非管理者が過去に共有したサーバーは自動では外れない。