Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-2005 — PostgreSQL pgcrypto のヒープバッファオーバーフロー PoC(CVE-2026-2005): 細工された OpenPGP パケットを使った低権限 RCE およびスーパーユーザーへの権限昇格を実証します。 | Kitploit
ツール/GitHubGitHub/open-flaw/cve-2026-2005
特権昇格脆弱性分析エクスプロイトポストエクスプロイトバイナリ解析データベースセキュリティバイナリエクスプロイト
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

PostgreSQL pgcrypto のヒープバッファオーバーフロー PoC(CVE-2026-2005): 細工された OpenPGP パケットを使った低権限 RCE およびスーパーユーザーへの権限昇格を実証します。

リポジトリを見る
10日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-2005 — PostgreSQL pgcrypto ヒープバッファオーバーフロー

対象コミット: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — 脆弱性あり)

概要

フィールド詳細
CVECVE-2026-2005
タイプヒープバッファオーバーフロー
コンポーネントcontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
影響PostgreSQL を実行する OS ユーザーとしての RCE
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
必要な認証低 — CREATE 権限を持つ任意の認証済みユーザー
影響を受けるバージョンPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
修正バージョン14.21, 15.16, 16.12, 17.8, 18.2 (2026年2月12日)
アーキテクチャaarch64 (ARM64) — ヒープオフセットと MBuf レイアウトはアーキテクチャ/glibc 固有

クイックスタート

root@kitploit:~
# Build and start PostgreSQL 18.1 (vulnerable)
docker compose up -d --build

# Wait for healthy
docker compose logs -f postgres
# Ctrl+C when you see "database system is ready to accept connections"

# Install node deps
npm install

# Run the full RCE exploit chain
node exploit.js --cmd "id"

# With verbose output
node exploit.js --cmd "id" --verbose

# Execute a custom command
node exploit.js --cmd "whoami"

エクスプロイトチェーン (7 段階)

root@kitploit:~
Stage 1: Heap pointer leak
  └─ Corrupt mdst chunk header → parse pfree() error message

Stage 2: Arbitrary read (multi-offset scan)
  └─ Overwrite mdst->data → scan memory near leaked pointer

Stage 3: Pointer candidate collection
  └─ Scan heap dump for non-heap addresses

Stage 4: PIE base resolution
  └─ Read /proc/<pid>/maps via Docker exec (100% reliable)

Stage 5: (skipped — PIE base is known from maps)

Stage 6: Arbitrary write
  └─ Forge msrc + mdst MBufs → overwrite CurrentUserId → 10 (superuser)

Stage 7: Command execution
  └─ COPY FROM PROGRAM → arbitrary OS command as postgres user

ファイル構成

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # Builds PostgreSQL 18.1 from source
├── docker-compose.yml      # PostgreSQL service with auto-restart
├── init.sh                 # Entrypoint — initdb + listen config
├── README.md               # This file
└── poc/
    ├── package.json        # Node.js dependencies (pg)
    ├── exploit.js          # Full 7-stage RCE exploit (Node.js)
    ├── verify.sh           # Shell-based quick verification
    └── test-pgcrypto.sql   # SQL-only test of pgcrypto loading

手動ビルド (macOS / Linux)

root@kitploit:~
git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

要件

  • Docker + Docker Compose (aarch64 ホスト、例: Apple Silicon Mac)
  • Node.js ≥ 18
  • PostgreSQL ビルド用に約 2 GB のディスク容量
  • 初回ビルドに約 3〜5 分
  • tmux (任意 — --gdb フラグ使用時のみ必要)

脆弱性の詳細

このバグは contrib/pgcrypto/pgp-pubdec.c の pgp_parse_pubenc_sesskey() に存在します。 OpenPGP 公開鍵暗号化セッションキーパケット (タグ 1) を解析する際に:

  1. パケットから MPI (多倍長整数) の長さを読み取ります
  2. その長さに基づいてバッファを割り当てます
  3. MPI を RSA 復号してバッファに格納します
  4. 境界チェックなしで復号データからセッションキーの長さを読み取ります
  5. 検証されていない長さに基づいて、セッションキーデータを固定サイズのバッファに memcpy します

この memcpy はヒープバッファの境界を越えて書き込む可能性があり、隣接するヒープのメタデータやデータを破壊して、任意のコード実行につながります。

エクスプロイトチェーンの詳細

  1. ヒープポインタリーク — malloc チャンクヘッダーを破壊し、pfree() エラーメッセージを解析して mdst->data ヒープアドレスを抽出します。
  2. PIE ベースの解決 — Docker コンテナ内の /proc/<pid>/maps を読み取り、実行時の postgres バイナリのロードアドレスを特定します。
  3. 任意書き込み — ヒープオーバーフローを介して msrc (送信元) と mdst (宛先) の両方の MBuf 構造体を偽造します。msrc はスーパーユーザー OID (10) を含む埋め込み symenc パケットを指し、mdst は CurrentUserId - 4 (4 バイトの SET_VARSIZE ヘッダーを考慮) を指します。
  4. 権限昇格 — CurrentUserId = 10 (ブートストラップスーパーユーザー) を設定し、COPY FROM PROGRAM を実行して任意の OS コマンドを実行します。

CLI オプション

メモ

  • pgcrypto 拡張機能はトラステッドです — CREATE 権限を持つユーザー (スーパーユーザー以外) なら誰でもインストールできるため、低い権限で悪用が可能です。
  • Docker ビルドには gdb でのデバッグを容易にする --enable-debug が含まれています。
  • ヒープオフセット (SRC_CHUNK_OFFSET=100、DST_CHUNK_OFFSET=172) は aarch64 + glibc 固有です — 他のアーキテクチャやアロケータでは異なるオフセットが必要です。
  • コンテナは restart: always を使用して、PIE 候補のテスト中にバックエンドがクラッシュしても自動復旧します。
  • PIE ベースは Docker コンテナ内の /proc/<pid>/maps を介して解決されます — ホスト側で readelf は不要です。
  • CurrentUserId オフセット用のシンボルテーブルは docker exec readelf で読み取られます。

参照

  • PostgreSQL セキュリティアドバイザリ
  • ZeroDay.Cloud 技術解説記事
  • NVD エントリー
ツールをダウンロード
フラグデフォルト説明
--cmdidエクスプロイト成功後に実行する OS コマンド
--key-size3072RSA キーサイズ (ビット)
--host127.0.0.1PostgreSQL ホスト
--port5432PostgreSQL ポート
--userpostgresデータベースユーザー
--password(空)データベースパスワード
--dbnamepostgresデータベース名
--binary./postgresシンボル取得用の postgres ELF バイナリへのパス
--scan-offset自動リークしたポインタからのヒープスキャンオフセットを上書き
--verboseオフ詳細なデバッグ出力を有効化
--gdbオフオーバーフローポイントで tmux 経由で GDB をアタッチ