PostGREShellと名付けられた重大なPostgreSQLの脆弱性により、低権限のレプリケーションアカウントを持つ攻撃者が任意のコードを実行し、データベースのスーパーユーザー権限へと昇格した上で、影響を受けるサーバーに永続的なバックドアを設置できる可能性があることが分かりました。
CVE脆弱性アラート
CVE-2026-6471として追跡されているこの欠陥は、バージョン9.4以降のPostgreSQLに影響を及ぼしていたとされており、危険なプラグイン読み込み経路が約12年間にわたって放置されていたことになります。
Cyera Researchは9月1日にこの問題を公表し、このバグがバックアップ、ストリーミングレプリケーション、変更データキャプチャ、フェイルオーバー、データベース監視に使われる中核コンポーネントに影響すると警告しています。
PostgreSQLは企業インフラやクラウドプラットフォームで広く採用されているため、漏洩したレプリケーション認証情報は攻撃者にとって価値の高い標的となり得ます。
12年前から存在したPostgreSQLの欠陥
PostGREShellはPostgreSQLの論理レプリケーション機構に存在します。組織は論理レプリケーションを利用して、先行書き込みログ(WAL)の変更内容をスタンバイインスタンス、分析プラットフォーム、移行ツール、Debeziumなどの変更データキャプチャサービスへストリーム配信しています。
こうした変更内容を取得するには、クライアントが論理レプリケーションスロットを作成し、出力プラグインの名前を指定する必要があります。このプラグインは.so、.dll、.dylib形式のコンパイル済みネイティブコードのライブラリであり、PostgreSQLはこれをサーバープロセスに読み込んでレプリケーションデータの形式を整えます。
通常、PostgreSQLは非スーパーユーザーがSQLの任意の外部ライブラリをLOADコマンドで読み込むことを制限しています。check_restricted_library_name()というセキュリティチェック機能が、ライブラリの読み込みを承認済みの管理用ディレクトリに限定し、危険なパスをブロックする仕組みです。

しかし、Cyeraによると、論理レプリケーションの経路では同様の検証が行われていなかったといいます。REPLICATIONロールを持つユーザーであれば、絶対パス、../のようなディレクトリトラバーサル文字列、あるいはWindowsのUNCパスを含むプラグイン名を指定できてしまう可能性があるとのことです。
その結果、PostgreSQLはその値をオペレーティングシステムのライブラリ読み込み関数へそのまま渡してしまいます。具体的にはLinuxやmacOSのdlopen()、WindowsのLoadLibrary()です。悪意あるライブラリが読み込まれると、その初期化コードはPostgreSQLサーバープロセスの内部で実行されます。
影響の内容はオペレーティングシステムや設定によって異なります。Windowsの場合、攻撃者はSMB共有上に悪意あるDLLを設置し、UNCパスをデータベースサーバーに指定できる可能性があります。
アウトバウンドのSMB通信が有効になっている環境では、攻撃者が対象システムに事前にファイルを書き込むことなく、PostgreSQLがリモートからDLLを取得・読み込みしてしまう恐れがあります。
LinuxおよびmacOSでは、悪用に際して攻撃者が制御するライブラリがあらかじめローカルに保存されている必要がある場合があります。また、NFSの自動マウントを使用しているシステムでは、ネットワークマウントされたパス経由でリモートからライブラリが配信される可能性にもさらされます。
コードの実行に成功すると、PostgreSQLサービスアカウントが持つオペレーティングシステム権限の下で動作します。ここから攻撃者はPostgreSQLの内部メモリやカタログ構造を操作し、通常のSQL権限チェックを回避してスーパーユーザー相当のデータベースアクセス権を取得できる可能性があります。

PostgreSQLのスーパーユーザー権限を得た攻撃者は、機密性の高いアプリケーションデータの読み取り、データベースに保存された認証情報へのアクセスが可能になるほか、設定によってはファイルの書き込みやデータベース機能を介したオペレーティングシステムコマンドの実行もできてしまいます。
Cyeraは、悪意あるプラグインがpg_hba.confを改変したり、shared_preload_librariesに自身を登録したり、管理者が修復措置を講じた後でも不正な権限を復元したりする恐れがあると警告しています。
Vladimir Tokarev氏によると、VirusTotalで調査したところ、暗号資産マイナーやトロイの木馬、リバースシェルを含む114件の不審なPostgreSQLプラグインが見つかったといいます。
こうしたサンプルの存在だけではCVE-2026-6471が実際に悪用されたことの確証にはなりませんが、信頼できないデータベース拡張機能が抱えるより広範なリスクを浮き彫りにしています。
緩和策
管理者はCVE-2026-6471に対応するPostgreSQLのセキュリティアップデートを直ちに適用し、REPLICATION属性が付与されたすべてのアカウントを見直す必要があります。レプリケーションアクセスは、制限的なpg_hba.confルールによって信頼できるホストのみに限定すべきです。
セキュリティ意識向上トレーニング
組織はまた、データベースサーバーから発信される不要なアウトバウンドのSMBトラフィック(ポート445)やNFSトラフィック(ポート2049)をブロックし、使用していない自動マウントサービスを無効化するとともに、想定外のCREATE_REPLICATION_SLOTアクティビティを監視すべきです。スラッシュやバックスラッシュ、トラバーサル文字列を含むプラグイン名は、悪用の可能性を示す優先度の高い兆候として扱う必要があります。
SOCを常に最新の状態に保ち、マルウェアやフィッシングの発生から24時間以内に検知できるようにしましょう。 ANYRUNを試して早期検知でインシデントを未然に防ぎましょう。
翻訳元: https://gbhackers.com/12-year-old-postgresql-flaw/