pgAdmin 4に存在するクリティカルな脆弱性により、未認証のリモート攻撃者が悪意のあるHTTP識別ヘッダーを送信するだけで、既存の管理者アカウントを含む任意のユーザーになりすませることが判明しました。
Hacking& Cracking
この脆弱性はCVE-2026-86863として追跡されており、pgAdminのWebserver認証モードを使用している環境が対象で、CVSS 3.1スコアは10点満点中9.8となっています。
影響を受けるのはpgAdmin 4のバージョン6.2から9.17までで、pgAdmin 4バージョン9.18で修正済みです。
クリティカルなpgAdmin認証バイパス
pgAdminのWebserver認証ソースは、上流のWebサーバーやリバースプロキシがリクエストをpgAdminへ転送する前にユーザーを認証する構成を想定した機能です。上流のコンポーネントは、認証済みのユーザー名をCGIまたはWSGIの環境変数を通じて提供します。
しかし、脆弱性のある実装では、信頼できるサーバー提供の環境値と、リモートクライアントがHTTPヘッダーで直接送信した識別値とを確実に区別できていませんでした。
`WebserverAuthentication.get_user()`関数は、まずリクエスト環境から設定済みの`WEBSERVER_REMOTE_USER`値を取得しようとします。この取得に失敗すると、受信したリクエストヘッダーから同名の値を取得するフォールバック処理に移行します。
HTTPリクエストヘッダーは送信者側が自由に制御できるため、pgAdminインスタンスにアクセスできる攻撃者は、標的とするアカウントのユーザー名を含むヘッダーを送信できます。これにより、パスワードや多要素認証などの正当な認証情報なしに、そのアカウントとして認証を突破される恐れがあります。
管理者が`WEBSERVER_REMOTE_USER`を`HTTP_X_FORWARDED_USER`や`X-Forwarded-User`といったHTTPプレフィックス付きまたはハイフン区切りの値で設定していた場合、このリスクはさらに高まります。
WSGIサーバーは、こうした名前の環境変数にクライアントから送られたヘッダーの値をそのまま露出させることが多く、フォールバック処理が適用される前の段階から、識別情報のソース自体が攻撃者に操作されうる状態になっていました。
この脆弱性の悪用に成功すると、攻撃者は管理者や他の特権ユーザーが所有するpgAdminセッションへのアクセス権を得られる可能性があります。侵入後は、そのアカウントを通じてアクセス可能なデータベースオブジェクトやデータを閲覧、改ざん、削除できる恐れがあります。
本脆弱性は、CVSSの両バージョンにおいてクリティカルと評価されています。
| スコアリングシステム | 深刻度 | スコア |
|---|---|---|
| CVSS 3.1 | クリティカル | 9.8 |
| CVSS 4.0 | クリティカル | 9.3 |
CVSS 3.1のベクター値からは、この脆弱性がリモートから低い攻撃複雑度で悪用可能であり、権限もユーザー操作も不要で、機密性・完全性・可用性に重大な影響を及ぼしうることが示されています。
なお、この問題はpgAdminの`AUTHENTICATION_SOURCES`設定でWebサーバー認証が有効になっている場合にのみ該当する点に注意が必要です。他のpgAdmin認証方式を利用している組織は、今回のWebserver認証の不具合による影響を受けません。
バージョン9.18では、pgAdminが主張された識別情報を扱う方法が変更されました。今回のアップデートにより、正規のCGI/WSGI変数とヘッダー由来の値が区別されるようになり、デフォルトでは前者のみが信頼されます。
管理者は引き続き意図的にヘッダー提供の識別情報を利用することも可能ですが、その場合は`WEBSERVER_REMOTE_USER_FROM_HEADER`を明示的に有効化する必要があります。
このオプションは、`WEBSERVER_TRUSTED_PROXIES`による信頼できるプロキシ構成と組み合わせて使用する必要があります。また環境によっては、`WEBSERVER_SHARED_SECRET`に対して検証される共有シークレットヘッダーが必要になる場合もあります。
さらに今回の修正では、攻撃者に操作されうる`X-Forwarded-For`値に依存する`request.remote_addr`の代わりに、実際のソケットのピアアドレスを確認するようになりました。追加の安全対策として、pgAdminは`auth_source`がwebserverに設定されていないアカウントへのWebserver認証ログインを、現在はブロックするようになっています。
各組織は直ちにpgAdmin 4.18、または入手可能な最新のパッチ適用済みリリースへアップグレードし、リバースプロキシの認証設定を見直す必要があります。
セキュリティチームは、識別情報ヘッダーが明示的に信頼されたプロキシアドレスからのみ受け付けられるようにするとともに、不審なpgAdminセッション、不正な管理者アクセス、想定外のヘッダー値がないかログを調査すべきです。本脆弱性は、セキュリティ研究者のSanghyeon Lee氏(別名h9e0n)によって報告されました。
Cloudsecurity solutions
SOCの各アラート調査時間を21分短縮。即座に対応できるIOCコンテキストでSOCを強化: TI Lookupを貴社のSOCに統合する
翻訳元: https://gbhackers.com/critical-pgadmin-authentication-bypass/