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 およびスーパーユーザーへの権限昇格を実証します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

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:~
# PostgreSQL 18.1 (脆弱性あり) をビルドして起動
docker compose up -d --build

# 起動完了を待つ
docker compose logs -f postgres
# "database system is ready to accept connections" が表示されたら Ctrl+C

# 初回セットアップ: オフラインシンボル解析用に postgres バイナリをコピー
docker cp cve-2026-2005-poc:/usr/local/pgsql/bin/postgres ./postgres

# Node 依存関係をインストール
npm install

# 完全な RCE エクスプロイトチェーンを実行 (純粋な SQL — Docker 操作なし)
node exploit.js --cmd "id"

# 詳細出力付き
node exploit.js --cmd "id" --verbose

# カスタムコマンドを実行
node exploit.js --cmd "whoami"

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

root@kitploit:~
Stage 1: ヒープポインタリーク
  └─ mdst チャンクヘッダを破壊 → pfree() エラーメッセージを解析

Stage 2: 任意読み取り (マルチウィンドウスキャン)
  └─ mdst->data を上書き → リークしたポインタ付近のメモリをスキャン

Stage 3: ポインタ候補の収集
  └─ ヒープダンプからポインタ状の 8 バイト値をスキャン

Stage 4: PIE ベースの解決
  └─ リークしたアドレスを ELF シンボルオフセットと照合 (ページオフセット
     グループ化、オフライン — シンボルはローカルバイナリコピーから解析)

Stage 5: PIE の検証
  └─ 候補ベースで CurrentUserId を任意読み取り → セッション OID と比較

Stage 6: 任意書き込み
  └─ msrc + mdst MBuf を偽造 → CurrentUserId を上書き → 10 (スーパーユーザー)

Stage 7: コマンド実行
  └─ COPY FROM PROGRAM → postgres ユーザーとして任意の OS コマンドを実行

ファイル構成

root@kitploit:~
CVE-2026-2005/
├── Dockerfile              # ソースから PostgreSQL 18.1 をビルド
├── docker-compose.yml      # 自動再起動付き PostgreSQL サービス
├── init.sh                 # エントリポイント — initdb + リスニング設定
├── README.md               # このファイル
└── poc/
    ├── package.json        # Node.js 依存関係 (pg)
    ├── exploit.js          # 完全な 7 段階 RCE エクスプロイト (Node.js)
    ├── verify.sh           # シェルベースのクイック検証
    └── test-pgcrypto.sql   # pgcrypto 読み込みの SQL のみのテスト

手動ビルド (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 拡張機能は trusted です — CREATE 権限を持つ任意のユーザー (スーパーユーザー以外) がインストールできるため、低権限で悪用可能です。
  • Docker ビルドには gdb でのデバッグを容易にするための --enable-debug が含まれています。
  • ヒープオフセット (SRC_CHUNK_OFFSET=100、DST_CHUNK_OFFSET=172) は aarch64 + glibc に固有です — 他のアーキテクチャ/アロケータでは異なるオフセットが必要です。
  • PIE ベースはリークしたヒープポインタからシンボルオフセット投票によって解決され、 同じ任意読み取りプリミティブを介して CurrentUserId を読み取ることで確認されます。

参考情報

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