Spring AIのベクトルDB連携に不正クエリの脆弱性、安全版は1.0.9以降
Javaで生成AIアプリを作るフレームワーク『Spring AI』のベクトルDB連携に、危険度8.6の脆弱性(CVE-2026-47835)。特殊文字を使うとログインなしでElasticsearchなどに不正なクエリを実行され、情報流出の恐れがあります。修正版1.0.9/1.1.8が公開済みで、開発者は即更新を。
目次
Javaで生成AIアプリを作るフレームワーク『Spring AI』のベクトルDB連携に、危険度8.6の脆弱性(CVE-2026-47835)。特殊文字を使うとログインなしでElasticsearchなどに不正なクエリを実行され、情報流出の恐れがあります。修正版1.0.9/1.1.8が公開済みで、開発者は即更新を。
Javaで生成AIアプリを作るための人気フレームワーク「Spring AI」のベクトルデータベース連携(Elasticsearch・OpenSearch・GemFire向け)には、危険度8.6のクエリインジェクション(データベースへ不正な命令を通せる不備)があります。番号はCVE-2026-47835。特殊な文字を混ぜた入力を使うと、ログインなしで、AIアプリが裏で使っているデータベースに対して不正なクエリ(命令)を実行できてしまう恐れがあります。修正済みは、1.0.x系なら 1.0.9 以降、1.1.x系なら 1.1.8 以降。これより古いバージョンを使っているなら更新が必要で、修正版以降なら追加の対策は要りません。
あわせて押さえておきたいのが系統の世代交代です。この脆弱性が公表された2026年6月12日、Spring AIは新しいメジャー版 2.0.0 が同時に正式公開(GA)されました。2.0はSpring Boot 4・Spring Framework 7を土台とする新基盤で、公式のセキュリティ情報でも2.0系は本CVEの対象に挙がっていません。一方、この記事が修正版として挙げる1.0.9/1.1.8が属する1.x系は、複数の情報が2026年6月末でサポート終了(EOL。以降は新しい修正が出ない前提)に達したと伝えています。いま1.x系にとどまるなら1.0.9/1.1.8以降が最終的な修正版であり、これから新しく作る・大きく作り直すなら現行の2.0系を選ぶのが素直な流れです。報告したのはアリババクラウドのNitro Cao氏です。
✓ この脆弱性の要点
- ✓対象はSpring AIのベクトルデータベース連携のうち、Elasticsearch・OpenSearch・GemFire向けの3部品(Spring公式)
- ✓特殊文字でデータベースに任意のクエリを実行できる不備(CWE-943、クエリインジェクション)。危険度は10段階で8.6
- ✓ログイン不要で、ネットワーク経由で悪用できる(CVSSベクターの権限要件はPR:N)
- ✓影響: 1.0.x系は1.0.9、1.1.x系は1.1.8で修正済み。更新すれば追加の対策は不要
- ✓1.x系は2026年6月末でサポート終了(EOL)に達したとされ、現行のメジャー最新は同月GAの2.0系。2026年7月23日時点で悪用報告・KEVカタログ登録は確認されていない
Spring AIとベクトルデータベースとは
Spring AIは、Javaの定番フレームワーク「Spring」の一員で、アプリにAI機能(チャットボットや社内文書の検索など)を組み込むための部品をまとめたものです。企業のJava開発で広く使われるSpringの流れに乗り、生成AIアプリの開発で採用が広がっています。
その中核になるのがベクトルデータベースです。AIに社内マニュアルや商品情報などを覚えさせて「この資料の中から答えて」と検索させる仕組み(RAGと呼ばれます)では、文章を数値の並びに変換してこの専用データベースにためておき、質問に近い内容を探し出します。Spring AIは、Elasticsearch・OpenSearch・GemFireといった代表的なデータベースと接続する部品を用意しています。
利用者が検索するとき、「この条件に合うものだけ」と絞り込む指定(メタデータフィルター)を付けられます。この脆弱性は、その絞り込み条件に特殊な文字を混ぜられたときの処理に潜みます。
AIの記憶庫が、誰でも開ける棚に変わる時
危険度8.6という数字より先に、「そのベクトルデータベースに、いったい何をためているのか」を思い出すほうが、この脆弱性の怖さは伝わります。AIに答えさせるために投入するのは、たいてい公開していない社内資料や、顧客とのやり取り、商品の非公開情報といった、検索の都合で一か所に集めた中身だからです。
この絞り込み条件のすき間に手を入れに来るのは、公開されているAIアプリの入力欄やAPIを片端から試して回る攻撃者、企業の内部資料を盗んで売り買いする集団、競合の未発表情報を探る産業スパイ、AIに学習させた個人情報を狙うデータブローカーです。彼らが取りに来るのは抽象的な「データ」ではなく、AIに覚えさせた契約書や設計資料、問い合わせ履歴に含まれる氏名や連絡先、検索のために蓄えた文章そのものです。ログインがいらないため、アプリの検索窓に細工した文字列を入れるだけで成立します。絞り込み条件に不正なクエリを差し込めた瞬間、AIが参照している記憶庫の中身を、本来見えないはずの範囲までそっくり検索・抜き出されてしまいます。
セキュリティの言葉でいうと、これはおなじみのSQLインジェクションと同じ系統の「クエリインジェクション」です。データベースへの命令を組み立てる文章に、攻撃者の文字列が命令として紛れ込んでしまう型で、Elasticsearchなどが備える機能と組み合わされると、想定外のデータの読み出しにつながります。検索窓やAPIという「誰でも触れる入口」がそのまま悪用経路になるため、攻撃者は人手で一件ずつではなく、自動でアプリを巡回して刺さる先を探せます。AIアプリは新しい技術に見えても、その裏にあるのは昔ながらのデータベースであり、入力の扱いを誤れば同じ落とし穴にはまります。
「8.6」という数字が表すのは、あくまで技術的な深刻さの目盛りにすぎません。AIに読ませた資料の山は、人手で全部さばけないからAIにまとめさせたい社内文書、外に出せないからこそ社内のAIに閉じて使っている機密、預かっている顧客の情報であることが多いはずです。本当に失われるのは「データベース1個」ではなく、その中に集めた取引相手の信用や、まだ世に出していない計画、他人から預かった情報のほうです。
CVE-2026-47835:絞り込み条件から不正なクエリが通る
CVE-2026-47835は、Spring公式の説明によると「特殊文字を使って、Elasticsearch・OpenSearch・GemFireのベクトルデータベースに任意のクエリを強制的に実行させられる」というものです。種別は、データベースへの命令を組み立てる際に特殊な文字を無害化しきれない不備(CWE-943)です。
本来、検索の絞り込み条件として渡される文字列は「ただのデータ」として扱われるべきです。ところが、その文字列がデータベースへの命令を組み立てる際にそのまま使われてしまうと、攻撃者が紛れ込ませた命令が実行されます。その結果、本来の絞り込みを越えてデータベースの中身を読み出される、といった被害につながります。
技術的な評価軸(CVSSベクター)は AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L で、スコアは8.6です。要点は「ネット越しに(AV:N)、簡単な条件で(AC:L)、ログインなし(PR:N)・利用者の操作なし(UI:N)で成立し、情報の盗み見の影響が最大(C:H)」という意味です。改ざんやサービス停止の評価は限定的ですが、情報が抜かれる方向の被害が大きく、認証が要らない点が深刻さを底上げしています。
対象バージョンと安全な更新先
対象は、Spring AIのベクトルデータベース連携のうちElasticsearch・OpenSearch・GemFire向けの部品です。使っているSpring AIのバージョンを確認してください。
| バージョン系統 | 影響を受ける版 | 修正版・更新先 |
|---|---|---|
| 1.0 系 | 1.0.0 〜 1.0.8 | 1.0.9 |
| 1.1 系 | 1.1.0 〜 1.1.7 | 1.1.8 |
| 2.0 系 (現行の最新系統) | アドバイザリに 記載なし(非対象) | 1.x からの 移行先 |
| 対象の部品 | Elasticsearch/ OpenSearch/GemFire 連携を使用 | 上記の修正版へ 依存を更新 |
対応は明確で、Spring AIの依存を1.0.9 または 1.1.8 以降へ更新することです。Spring公式によれば、更新すれば追加の対策は不要です。MavenやGradleの依存バージョンを上げ、ビルドし直してデプロイしてください。Elasticsearch・OpenSearch・GemFireの連携を使っていない場合、本CVEの直接の影響は受けませんが、依存はまとめて最新に保っておくのが安全です。なお1.x系はサポート終了に達したとされ、以降は新しい修正が出ない前提のため、長く使い続けるシステムでは現行の2.0系への移行も視野に入れてください。ただし2.0はSpring Boot 4・Spring Framework 7が前提で、土台ごとの更新になる点は考慮が必要です。
こうした「外部から取り込んだ部品(OSS)に脆弱性が混ざる」問題は、言語を問わず起こります。自分のアプリがどのライブラリのどのバージョンに依存しているかを把握しておくことが、修正の出たときに素早く動く前提になります。npmやPythonの依存であれば、本サイトのOSS脆弱性スキャナーで貼り付けるだけのチェックもできます。
Spring AIのベクトルDB注入は今回が初めてではない
Spring AIでは、この「検索の絞り込み条件から不正な命令が通る」型の脆弱性が、ここ数か月で繰り返し見つかっています。2026年4月には、別のデータベース連携でのJSONPath注入(CVE-2026-22729)や、絞り込み式の処理からサーバー上でコードまで実行できる例(CVE-2026-22738)に加え、MariaDBベクトルストアのSQLインジェクション(CVE-2026-22730)やNeo4jのCypher注入(CVE-2026-22743)などがまとめて公表されました。同年6月のCVE-2026-47835は、その流れに連なる1件です。フィルター処理という同じ場所が、繰り返し弱点になっています。
AI開発まわりの部品で脆弱性が続くのは、Spring AIに限った話ではありません。本サイトでも、各社のAIをまとめるLiteLLMの認証なし乗っ取り(CVE-2026-42271)、推論サーバーvLLMの繰り返すRCE(CVE-2026-4944)、Guardrails AIへの毒入りパッケージ混入(CVE-2026-45758)を取り上げてきました。新しい分野ほど部品の作り込みが追いつかず、基本的な入力処理の穴が残りがちです。
悪用の状況とこれからの注意点
2026年7月23日時点で、CVE-2026-47835が実際の攻撃に使われたという公開報告はなく、米政府機関が攻撃に悪用されている脆弱性をまとめるCISAのKEVカタログにも登録されていません。公式のセキュリティ情報にも実環境での悪用(in the wild)の記述はなく、責任ある開示として公表されたものです。攻撃に悪用されている脆弱性の最新状況は、本サイトのCISA KEV日本語ダッシュボードでまとめて確認できます。
ただし、クエリインジェクションは攻撃者にとって馴染み深い手口で、ログイン不要のうえ公開されたAIアプリの入力欄から試せます。公開から1か月余りが経っても広範な悪用は確認されていませんが、修正前の詳細が出回れば、後追いで悪用される可能性は残ります。1.0.9/1.1.8以降へ依存を更新しておくのが、最も確実な防御です。1.x系はサポート終了に達したとされ、以降は新しい修正が出ない前提のため、更新の遅れがそのまま長く残るリスクになります。
参照元
- ▸ NVD - CVE-2026-47835(2026年6月15日公開)
- ▸ Spring - CVE-2026-47835(公式セキュリティ情報、修正版1.0.9/1.1.8)
- ▸ MITRE - CWE-943: Improper Neutralization of Special Elements in Data Query Logic
- ▸ Spring - CVE-2026-22729(関連: 過去のベクトルDB注入)
- ▸ Spring - Spring AI 2.0.0 GA available now(現行の最新系統2.0)
- ▸ HeroDevs - Spring AIの複数CVEと1.x系のEOLリスク(二次情報)
- ▸ CISA - Known Exploited Vulnerabilities Catalog

堀川 慎
Backend Engineer / AWS / Django / Go