20年前のPostgreSQL脆弱性、リモートコード実行を可能にするPoC悪用が公開

CVE-2026-2005の新たにリリースされたPoC悪用により、PostgreSQLのpgcrypto拡張機能の重大な脆弱性に改めて注目が集まり、システムがリモートコード実行(RCE)に晒される状況となっています。

セキュリティ研究者は、ほぼ20年前にさかのぼるレガシーコードパスに根ざしたこの欠陥により、攻撃者が権限を昇格させ、影響を受けたサーバで任意のコマンドを実行することが可能になる可能性があると警告しています。

この脆弱性はpgcryptoモジュール内のPGPセッションキー解析ロジックに存在します。具体的には、任意のメモリ読み書きアクセスを達成するために悪用される可能性があるヒープベースのバッファオーバーフローが関与しています。

これにより、攻撃者はPostgreSQLスーパーユーザーレベルまで権限を昇格させることができるようになり、完全なシステムコンプロミスへの道が開かれます。

20年前のPostgreSQL脆弱性

研究者「var77」によってGitHubで公開されたPoCは、Address Space Layout Randomization (ASLR)などの最新の保護をバイパスする多段階の悪用プロセスを実証しています。

この悪用は、細工されたPGPメッセージを利用してメモリ構造を破損させ、ヒープポインタをリークします。これらはその後、実行可能なメモリ領域を識別するために使用されます。

以下は、攻撃者が脆弱なpgcrypto PGP解析ロジックをトリガーし、権限昇格後に任意のOSコマンドを実行する方法を示すパブリックPoC からの例スニペットです。

bash# CVE-2026-2005のパブリックPoC悪用の使用例
python poc.py \
    --binary "$HOME/projects/pg/pgsql/bin/postgres" \
    --dbname test-db \
    --host 127.0.0.1 \
    --port 5432 \
    --user test-user \
    --password secret \
    --cmd "id"

メモリレイアウトが理解されると、悪用はCurrentUserIdを含むPostgreSQL内部変数を操作するための制御された上書きを実行します。この値をスーパーユーザー識別子に強制することで、攻撃者はデータベース環境内で昇格された権限を獲得します。

最終段階はPostgreSQLの「COPY FROM PROGRAM」機能を悪用して任意のオペレーティングシステムコマンドを実行し、実質的にデータベースサービスアカウントの下でリモートコード実行を達成します。

攻撃チェーンには複数の重要なステップが含まれています:

  • 破損したメモリチャンクとアロケータエラーメッセージを通じたヒープポインタリーク
  • 操作されたバッファポインタを介した任意のメモリ読み取り
  • ポインタ解析を使用した実行可能メモリ領域の識別
  • 位置独立実行ファイル(PIE)ベースの計算と検証
  • 権限関連変数を上書きするための任意のメモリ書き込み
  • PostgreSQLスーパーユーザーへの権限昇格
  • 組み込みデータベース機能を介したOSレベルコマンドの実行

注目すべきことに、成功した実行にはシンボルオフセットが一致する必要があるため、悪用にはターゲットPostgreSQLインスタンスを特定の脆弱なコミットからコンパイルする必要があります。この制約は機会的な攻撃を制限する可能性がありますが、制御された環境またはターゲット設定された環境でのリスクを完全に排除するものではありません。

影響を受けるシステムと影響

この欠陥は、pgcrypto拡張機能が有効なPostgreSQL導入に影響を与え、特に脆弱なコードバージョンから派生したビルドを実行しているものに影響します。pgcrypto関数への信頼されていない入力を許可する環境は特にリスクがあります

悪用が成功すると、以下につながる可能性があります:

  • 完全なデータベースコンプロミス
  • 不正なデータアクセスまたは変更
  • 任意のシステムコマンドの実行
  • エンタープライズネットワーク内での潜在的な横方向の移動

エンタープライズアプリケーション、クラウドプラットフォーム、重要インフラストラクチャにおけるPostgreSQLの広範な使用を考えると、この脆弱性は相当な波及効果をもたらす可能性があります。

緩和と推奨事項

組織は直ちに以下の対策を講じることを強く推奨されます:

  • パッチ版が利用可能になったらPostgreSQLをアップデートしてください
  • 必要ない場合はpgcrypto拡張機能を無効化または制限してください
  • データベースユーザー権限を制限し、スーパーユーザーアクセスの公開を避けてください
  • 異常なpgcrypto使用またはメモリ関連エラーについてログを監視してください
  • 信頼されていないネットワークからデータベースサービスへのアクセスを制限してください

さらに、セキュリティチームは悪用の兆候がないかシステムを監査すべきです。特にPostgreSQLが外部またはセミトラストの入力に晒されている場合にはなおさらです。

この事件は、広くデプロイされたソフトウェアのレガシーコードがもたらす継続的なリスクを浮き彫りにしています。何年も休止状態のままだった脆弱性は、最新の悪用技術が適用されると重大な脅威になる可能性があります。

動作するPoC が現在公開されているため、脅威行為者は欠陥を兵器化しようとする可能性があり、組織がPostgreSQL導入にパッチを当てて強化する緊急性が高まります。

翻訳元: https://gbhackers.com/20-year-old-postgresql-flaw-gets-public-poc-exploit/

ソース: gbhackers.com