30秒で判断
対応すべき人:
- pgAdmin 4 バージョン 6.9〜9.15 をサーバーモードで運用している
- pgAdmin 4 が外部ネットワークからアクセス可能な環境にある
対応不要な人:
- pgAdmin 4 9.16以降にアップグレード済み
- pgAdmin 4 を使用していない
- デスクトップモードのみで使用(デスクトップモードはすべてのリクエストを既存ユーザーとして再認証するため影響なし)
確認コマンド:
pip show pgadmin4 | grep Version
概要
pgAdmin 4 の SQL Editor ブループリントに含まれる2つのエンドポイントに、認証チェックデコレータ(@pga_login_required)が欠如していた問題です。
DELETE /sqleditor/close/<trans_id>POST /sqleditor/initialize/sqleditor/update_connection/<sgid>/<sid>/<did>
これら2つのエンドポイントは、セッション内に保存された gridData[<trans_id>]['command_obj'] をpickle逆シリアライズするパスに到達します。サーバーモードでは、認証されていないユーザーが直接これらのエンドポイントを呼び出せる状態でした。
悪用するには「Flask の SECRET_KEY の入手」と「pgAdmin セッションディレクトリへの書き込みアクセス」の2つの前提条件が必要です。このCVE単独では完全な侵害には至りませんが、他の経路でこれらの前提が満たされた際の最終ステップとして機能します。
修正は各エンドポイントへの @pga_login_required デコレータの追加です。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 9.0(Critical) |
| CWE | CWE-306(重要な機能に対する認証の欠如)、CWE-502(信頼されていないデータのデシリアライズ) |
| 攻撃元区分 (AV) | ネットワーク (N) |
| 攻撃条件の複雑さ (AC) | 低 (L) |
| 必要な特権 (PR) | なし (N) |
| ユーザーの関与 (UI) | 不要 (N) |
影響を受けるソフトウェア
| 製品 | 影響バージョン |
|---|---|
| pgAdmin 4 | 6.9 〜 9.15(サーバーモードのみ) |
デスクトップモードでは before_request フックが全リクエストに対して再認証を行うため、このCVEの影響を受けません。
修正バージョンと回避策
修正バージョン: pgAdmin 4 9.16
アップグレード:
pip install --upgrade pgadmin4
回避策:
- pgAdmin 4のアクセスをVPNや認証プロキシで保護し、外部からの直接アクセスを遮断する
- デスクトップモードへの切り替え(サーバーモードの場合)
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
