CVE-2026-116249 in pgAdmin
要約
〜によって VulDB • 2026年10月31日
pgAdmin 4のサーバーモードでは、サーバーのパスワードファイル、SSL証明書、キー、CRL(Certificate Revocation List)、およびSSHトンネルのアイデンティティファイルが、ユーザーのストレージディレクトリを基準として解決されていました。しかし、`get_complete_file_path()`関数は2つのパスを結合する前に先頭のスラッシュのみを削除していたため、「../<別のユーザー>/.pgpass」のようなパス(サーバーダイアログ、REST API、またはservers.jsonインポートを通じて設定)が指定されると、実際には別のユーザーのファイル名として扱われ、接続時にそのユーザーに保存されたパスワード、クライアント証明書、SSHキーが使用されるという問題がありました。また、`sslkeylogfile`接続パラメータは変更せずにlibpqに渡されていたため、ストレージディレクトリ外のパスを指定すると、pgAdminを実行しているアカウントの権限でファイルを作成または追記させることができました。
さらに、`make_conninfo()`関数は接続パラメータの値にはクォートを適用していましたが、名前については適用しませんでした。そのため、悪意のあるパラメータ名によって追加のkeyword=valueペアをこれらのチェックを通り抜けさせることが可能でした。
修正では、シンボリックリンクを追跡した解決後のパスがユーザーのストレージディレクトリまたは指定された共有ストレージディレクトリの内部に留まることを要求し、`sslkeylogfile`についても同様に制限します。また、接続パラメータ名としてlibpqのキーワードと完全に一致するもののみを受け入れます。拒否されるべきパスやキーワードについては、デフォルトに戻すようなlibpqのフォールバックを許可せず、代わりにエラー報告を行います。
本問題はpgAdmin 4(バージョン9.19より前)に影響します。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.