PostgreSQL pgcrypto の RCE 脆弱性 CVE-2026-2005:PoC が登場

20-Year-Old PostgreSQL Flaw Gets Public PoC Exploit for Remote Code Execution

2026/05/19 gbhackers — PostgreSQL の pgcrypto エクステンションで発見された、深刻なリモートコード実行 (RCE) の脆弱性 CVE-2026-2005 に対して PoC (proof-of-concept) エクスプロイトが公開された。セキュリティ研究者によると、この問題は約 20年前に遡るレガシーコードに起因し、攻撃者に対して権限昇格および任意のコマンド実行を許す可能性がある。

この脆弱性は、pgcrypto モジュール内の PGP セッションキー解析ロジックに存在する。具体的には、ヒープバッファ・オーバーフローの欠陥であり、任意のメモリ読み書きを引き起こすものである。

これにより攻撃者は、PostgreSQL スーパーユーザー権限への昇格を達成し、最終的にシステム全体の完全侵害に至る恐れがある。

20 年にわたり存在していた PostgreSQL の脆弱性

GitHub 上で研究者 “var77” が公開した PoC は、Address Space Layout Randomization (ASLR) などの防御を回避する多段階エクスプロイトを実証する。

このエクスプロイトは、細工された PGP メッセージを用いてメモリ構造を破壊し、ヒープポインタをリークする。それにより、悪意のコードを実行するための、メモリ領域の特定へと至る。

公開された PoC は、脆弱な pgcrypto PGP 解析ロジックをトリガーし、権限昇格後に任意の OS コマンドを実行する方法が示されている。

# Example usage of the public PoC exploit for CVE-2026-2005
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 機能を悪用する攻撃者が、任意の OS コマンドを実行することで、データベース・サービス・アカウント権限での RCE を達成する。

攻撃チェーンは、以下の重要なステップで構成される。

  • ヒープポインタ・リーク (メモリ破損およびアロケータエラー経由)。
  • バッファポインタ操作による任意のメモリ読み取り。
  • ポインタ解析による実行可能メモリ領域の特定。
  • Position Independent Executable (PIE) ベースの算出と検証。
  • 権限関連変数の上書きのための任意のメモリ書き込み。
  • PostgreSQL スーパーユーザーへの権限昇格。
  • データベース機能を悪用した OS コマンドの実行。

なお、このエクスプロイトは、特定の脆弱なコミットからビルドされた PostgreSQL インスタンスを前提としており、シンボル・オフセットの一致が必要となる。

この制約により、攻撃範囲が限定される可能性があるが、標的型攻撃や管理された環境では依然としてリスクが高い。

影響の範囲

この脆弱性は、pgcrypto エクステンションを有効化している PostgreSQL 環境に影響を及ぼすが、特に脆弱コードを含むビルドを使用している場合にリスクが高い。pgcrypto 関数に対して、信頼されていない入力を許可している環境は特に危険である。

攻撃成功時の影響は以下の通りである。

  • データベースの完全侵害。
  • 不正なデータ・アクセスおよび改竄。
  • 任意のシステムコマンドの実行。
  • 企業ネットワーク内での横展開。

PostgreSQL は、エンタープライズ・アプリケーション/クラウド/重要インフラなどで広く使用されているため、影響が広範囲に及ぶ可能性がある。

対策および推奨事項

ユーザー組織は、以下を直ちに実施すべきである。

  • 修正バージョン 18.2/17.8/16.12/15.16/14.21 への更新。
  • pgcrypto エクステンションの無効化または制限。
  • データベース・ユーザー権限の最小化およびスーパーユーザー権限の制限。
  • pgcrypto 利用とメモリエラーに関するログ監視。
  • 信頼されていないネットワークからの、データベース・アクセス制限。

また、PostgreSQL 環境が、外部入力または信頼できない入力に公開されているケースでは、侵害兆候の監査を実施する必要がある。

この件は、広く利用されるソフトウェアの、レガシーコードのリスクを示す典型例である。長年潜伏していた脆弱性が、現代のエクスプロイト技術により、深刻な脅威へと転化している。

すでに PoC が公開されており、攻撃者による武器化の可能性が高まっている。迅速なパッチ適用およびハードニングが求められる。