10年前から存在したPostgreSQLの欠陥、バックアップ用アカウントがバックドアに変わる

2014年以降ずっと見過ごされてきたこの欠陥により、レプリケーション権限を持つ低権限アカウントでもコードを実行し、データベースのスーパーユーザー権限を取得したうえで、永続的なアクセス経路を確立できる可能性があります。

PostgreSQLに存在していた重大な脆弱性が、10年以上にわたって発見されずに潜んでいました。この脆弱性を悪用されると、通常のバックアップ用アカウントがデータベースおよびサーバー全体の完全な侵害につながる経路になりかねません。

Cyera Researchが「PostGREShell」と名付けたこの問題は、データベースのレプリケーション機能に存在しており、REPLICATION属性を持つ低権限アカウントを保有する攻撃者が任意のコードを読み込んで実行できてしまう可能性があります。

Cyeraの研究者であるウラジミール・トカレフ(Vladimir Tokarev)氏はブログの投稿で次のように述べています。「この欠陥により、低権限の『バックアップ』用アカウントがデータベースサーバー上で任意のコードを読み込んで実行できてしまい、Windows、Linux、macOSを問わずリモートコード実行が可能になります」。さらに同氏は「この足がかりは、PostgreSQLのスーパーユーザー権限への完全なエスカレーションと永続的なバックドアアクセスへとつながり、通常のレプリケーション用アカウントがデータベースとサーバー全体の完全な侵害の起点に変わってしまいます」と付け加えています。

CVE-2026-6471として追跡されているこの脆弱性は、2014年にリリースされたバージョン9.4にまで遡って影響を及ぼしており、8月13日にリリースされたバージョン18.6、17.11、16.15、15.19、14.24を含む、サポート対象のすべてのPostgreSQLリリースで修正が適用されました。

トカレフ氏によれば、Windows、Linux、macOSのいずれのPostgreSQL環境も影響を受けるものの、コード実行に至るために必要な条件はプラットフォームごとに異なるとのことです。

既存の保護機構では不十分だった

この問題は、論理レプリケーションで使用される出力プラグインをPostgreSQLがどのように扱うかに起因しています。これらのプラグインはコンパイル済みのコードであり、PostgreSQLがこれを読み込むことで、外部システムやツール向けにデータベースの変更内容を整形します。

PostgreSQLには本来、スーパーユーザー権限を持たないユーザーが安全でないファイルシステムの場所から任意のライブラリを読み込むのを防ぐための保護機構が備わっています。「check_restricted_library_name()」という仕組みが、こうしたユーザーがプラグインを読み込める場所を制限し、パストラバーサルや絶対パスの指定を防いでいます。

しかしCyeraによると、レプリケーションのコードパスではこのセキュリティチェックが一度も呼び出されていませんでした。

論理レプリケーションスロットを作成できる攻撃者であれば、ファイルシステムのパスやトラバーサルシーケンス、あるいはWindows環境ではUNCパスを含む、細工されたプラグイン名を指定できてしまいます。すると、PostgreSQLはそのプラグイン名をそのままオペレーティングシステムのライブラリ読み込み関数に渡してしまいます。

悪意のあるライブラリが読み込まれると、その初期化コードがPostgreSQLサーバーのプロセス内で実行されてしまいます。

REPLICATION属性を持つアカウントは、バックアップやレプリカ、変更データキャプチャ(CDC)のパイプライン、マイグレーション、監視といった運用上の基盤としてごく一般的に利用されているため、今回のコード実行の脆弱性は特に深刻だといえます。

Cyeraによると、Windowsシステムは特に危険にさらされやすいとのことです。攻撃者はリモートのSMBサーバー上に悪意のあるDLLを設置し、PostgreSQLにそのファイルを参照させるだけで攻撃を成立させられるため、事前に標的システムへ悪意のあるファイルを配置しておく必要すらありません。

バックアップ用アカウントがスーパーユーザーに変わる

この問題はコード実行だけにとどまりません。

出力プラグインはPostgreSQLサーバーのプロセス内で動作するため、悪意のあるコードは通常のSQL権限モデルの枠外で動作しうるとCyeraは指摘しています。悪意のあるプラグインはPostgreSQLの内部構造を操作することで、攻撃者の権限をスーパーユーザーへと昇格させたり、内部の認証データを改ざんしたりすることができてしまいます。

スーパーユーザー権限を取得した攻撃者は、顧客データやアプリケーションのシークレット、保存された認証情報を含む、すべてのデータベースとその中身にアクセスできるようになります。また、PostgreSQLのスーパーユーザーは基盤となるオペレーティングシステムとやり取りすることも可能なため、攻撃者がコマンドを実行したり、機密ファイルを読み取ったり、サーバーにデータを書き込んだりできてしまう可能性もあります。

Cyeraは、PostgreSQLの認証設定を改変する手法や、データベースの再起動後も生き残るプリロードライブラリを利用する手法など、複数の永続化メカニズムを実証しています。トカレフ氏は、こうしたアクセス経路は組織の環境内へのより深い侵入にも利用されかねないと述べています。

同社はこの問題を2月にPostgreSQL Security Teamへ報告し、同チームが調査結果を精査したうえでCVE IDを割り当て、8月に修正版をリリースしました。

この脆弱性のCVSS評価は7.2と、Critical(緊急)には届かないレベルにとどまっているものの、Cyeraは顧客に対し直ちにパッチを適用するよう強く勧めています。PostgreSQLのプラグインは攻撃者にとって人気の標的となっているためです。同社がVirusTotalで実施した脅威ハンティングでは、トロイの木馬や暗号資産マイニングツール、リバースシェルを含む、悪意のあるPostgreSQLプラグイン114件が野放し状態で見つかっています。ただし、今回の開示ではこれらのプラグインとCVE-2026-6471の悪用との関連性は確認されていません。

パッチ適用に加えて、REPLICATION属性を持つアカウントを監査し、レプリケーションへのアクセスを制限したうえで、データベースサーバーからの不要な発信SMB通信・NFS通信をブロックすることが推奨されています。

シュウェタ(Shweta)氏は2017年からエンタープライズテクノロジーについて執筆しており、直近ではCSO online向けにサイバーセキュリティ関連の記事を報じています。ランサムウェアからゼロトラストアーキテクチャに至るまで、複雑なトピックを専門家と一般読者の双方にわかりやすく解説しています。アジアン・カレッジ・オブ・ジャーナリズムでジャーナリズムの大学院ディプロマを取得しており、サイバー脅威の解読に追われていないときは、小説を読んだり、映画を観たり、新しいレシピに挑戦したりして過ごしています。

翻訳元: https://www.csoonline.com/article/4218101/decade-old-postgresql-flaw-turns-backup-account-into-a-backdoor.html

本記事は csoonline.com の記事を翻訳・要約したものです。