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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/dinosn/cve-2026-2005
脆弱性分析エクスプロイトペネトレーションテストデータベースセキュリティバイナリエクスプロイト
GitHubdinosn/cve-2026-2005

cve-2026-2005

CVE-2026-2005のエクスプロイト。PostgreSQLのpgcrypto拡張機能におけるヒープオーバーフローを利用し、リモートコード実行につなげます。PoCジェネレーター、Dockerラボ、詳細な技術解説を含みます。

リポジトリを見る
1823ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-2005 — PostgreSQL pgcrypto ヒープオーバーフロー → RCE

PostgreSQLのpgcrypto拡張機能を標的とした、単一のSQLクエリによるリモートコード実行。この脆弱性はpgp_parse_pubenc_sesskey()におけるヒープバッファオーバーフローであり、PostgreSQL内部のMemoryContextアロケータメタデータを破壊し、postgresユーザーとして任意のコード実行を達成します。

CVECVE-2026-2005
コンポーネントcontrib/pgcrypto/pgp-pubdec.c
CWECWE-122 (ヒープベースのバッファオーバーフロー)
CVSSv3.18.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
影響を受けるバージョン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-02-12
修正コミット379695d3cc70d040b547d912ce4842090d917ece

攻撃実証

ターゲット検証

エクスプロイト実行

RCEの証明

クイックスタート

root@kitploit:~
git clone https://github.com/dinosn/cve-2026-2005.git
cd cve-2026-2005/lab
docker compose up -d pg-exploit
# postgresの初期化に約5秒待機
python3 ../poc/exploit.py --run cve-2026-2005-pg-exploit

完全なエクスプロイト実行

根本原因

root@kitploit:~
// contrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ctx->cipher_algo = *msg;
ctx->sess_key_len = msglen - 3;                       // 攻撃者が制御可能
memcpy(ctx->sess_key, msg + 1, ctx->sess_key_len);    // sess_keyはuint8[32]

ctx->sess_keyは、ヒープ割り当てされたPGP_Context構造体に埋め込まれた固定32バイトのバッファです。過大なRSA暗号化セッションキーを含む細工されたPGPメッセージにより、sess_key_lenが約200バイトまで引き上げられ、隣接するヒープ割り当て領域にオーバーフローします。修正ではsess_key_len > PGP_MAX_KEYの境界チェックが追加されています。

エクスプロイトチェーン

  1. ヒープオーバーフロー — sess_key[32]を超える148バイトのオーバーフローにより、偽のアロケータメタデータが隣接するMBuf割り当て領域に書き込まれます
  2. bzeroのスキップ — MBuf->data = NULLを設定し、クリーンアップ中にexplicit_bzeroがスキップされるようにします
  3. 偽のチャンクヘッダ — 偽造されたhdrmaskがblockoffset=64にデコードされ、ブロックポインタを攻撃者が制御するデータにリダイレクトします
  4. フリーリスト書き込み — AllocSetFreeがチャンクアドレスをMC+16(MemoryContext->methodsフィールド)に書き込み、vtableポインタを置き換えます
  5. エラーリターン — pgcryptoは通常のエラーを返し(クラッシュなし)、PostgreSQLのエラーハンドラをトリガーします
  6. VTableハイジャック — MemoryContextDelete(MC)が偽のvtableを通じてmethods->delete_context(MC)を呼び出します → system(MC)
  7. コマンド実行 — system()がMemoryContext構造体を文字列として読み取ります: NodeTag 0x1D5 = "\xd5\x01\x00\x00" → /usr/local/bin/\xd5\x01を実行します

前提条件

  • 認証済みのデータベースアクセス(pgcrypto関数に対するEXECUTE権限を持つ任意のユーザー — デフォルトでPUBLICに付与)
  • pgcrypto拡張機能がインストールされていること(CREATE EXTENSION pgcrypto)
  • ターゲット固有のアドレス(Dockerイメージごとに決定的。このコンテナ構成ではPIE ASLRなし)
  • /usr/local/bin/\xd5\x01に事前配置されたトリガースクリプト(Dockerfile.exploitに含まれています)

リポジトリ構造

root@kitploit:~
├── README.md
├── poc/
│   ├── exploit.py          # 自己完結型エクスプロイト生成・実行ツール
│   ├── gen_exploit_v7.py   # 注釈付きペイロードビルダー
│   ├── gen_payload.py      # クラッシュ専用PoCジェネレーター(全オーバーフローサイズ)
│   ├── poc_big.sql         # 事前生成されたクラッシュPoC(SIGSEGV)
│   └── poc_minimal.sql     # 最小4バイトオーバーフローPoC
├── lab/
│   ├── docker-compose.yml  # 完全なラボ: 脆弱、修正済み、デバッグ、エクスプロイト
│   ├── Dockerfile.exploit  # リリースビルド + トリガースクリプト(RCEターゲット)
│   ├── Dockerfile.vuln     # 標準の脆弱ビルド(クラッシュデモ)
│   ├── Dockerfile.debug    # Cassertビルド(アサーションデモ)
│   ├── init.sql            # データベース初期化
│   └── setup.sh            # ラボセットアップヘルパー
├── reports/
│   ├── RCE-CHAIN.md        # 詳細な技術的エクスプロイト解説書
│   ├── REPORT.md           # 脆弱性分析レポート
│   └── TODO-FOR-RCE.md     # 開発ログ(完了済み)
├── screenshots/
│   ├── 01-target-verification.png
│   ├── 02-exploit-fire.png
│   ├── 03-rce-proof.png
│   └── 04-full-run.png
└── src/                    # 関連ソースコードの抜粋

ラボビルド

コンテナポート目的
pg-exploit5436RCEターゲット(標準17.7 + トリガースクリプト)
pg-vuln5433クラッシュデモ(標準17.7、SIGSEGV)
pg-fixed5434修正済みビルド(17.8、ペイロードを拒否)
pg-debug5435デバッグビルド(ソース属性付きのcassert SIGABRT)
root@kitploit:~
# すべてのコンテナを起動
cd lab && docker compose up -d

# クラッシュデモ(標準ビルドでSIGSEGV)
docker exec cve-2026-2005-pg-vuln psql -U postgres -d lab -f /tmp/poc_big.sql
docker logs cve-2026-2005-pg-vuln 2>&1 | grep "signal 11"

# 修正済みビルド(正常に拒否)
docker exec cve-2026-2005-pg-fixed psql -U postgres -d lab -f /tmp/poc_big.sql
# ERROR: Public key too big

# デバッグビルド(ファイル:行番号付きのアサーション)
docker exec cve-2026-2005-pg-debug psql -U postgres -d lab -f /tmp/poc_big.sql
docker logs cve-2026-2005-pg-debug 2>&1 | grep "TRAP"

制限事項

  • アドレス依存: エクスプロイトはpostgres:17.7-bookworm Dockerイメージに固有のハードコードされたヒープアドレスを使用します。異なるビルド・環境ではアドレスの再調整(GDBまたは情報漏洩による)が必要です。
  • ウォームアップが必要: 同じ接続内での単一のpgcrypto呼び出し(SELECT digest('x','md5'))により、エクスプロイトクエリの前にヒープレイアウトが安定化されます。
  • トリガースクリプト: PATH内に\xd5\x01という名前のバイナリが必要です。Dockerfileがこれを事前にインストールします。実世界での悪用には、事前の書き込みアクセスまたは別のROP/one-gadgetアプローチが必要です。
  • リリースビルドのみ: --enable-cassert付きのデバッグビルドでは、フリーリスト書き込みの前にアサーションで中断されます。

タイムライン

  • 2026-02-12: Team Xint Codeにより脆弱性が公開
  • 2026-02-13: 修正コミット(379695d)
  • 2026-02-20: 修正済みバージョンがリリース(17.8など)
  • 2026-05-05: RCEエクスプロイトが開発され、ラボで実証

免責事項

このエクスプロイトは、許可されたセキュリティ研究および教育目的のみで提供されています。明示的な許可を得た管理されたラボ環境でのみ使用してください。

ツールをダウンロード