技術的な説明
Spring AI の MilvusVectorStore doDelete メソッドは、サニタイズされていないドキュメント ID を介したフィルター式インジェクションに対して脆弱です。攻撃者は、パラメータ化されるのではなく Milvus フィルター式に直接埋め込まれた悪意のある ID 値を作成でき、RAG および エージェント AI メモリシステムに使用されるベクトルデータベースの削除操作中に任意のフィルターロジックを実行できます。
攻撃経路
MilvusVectorStore 削除操作に渡されるドキュメント ID を制御できる攻撃者は、任意のフィルター式をインジェクトできます。ドキュメント ID はバインドパラメータとして渡されるのではなく、フィルター文字列に連結されるため、作成された ID は意図されたフィルターコンテキストから抜け出して、意図されていないベクトルレコードを削除または操作できます。これは、ユーザー入力または外部データがベクトルストア操作で使用されるドキュメント識別子に影響を与えるアプリケーションで直接悪用可能です。
影響を受けるシステム
Spring AI 1.0.0 ~最新 1.0.x(1.0.7 前)および Spring AI 1.1.0 ~最新 1.1.x(1.1.6 前)。Milvus をレトリーバル拡張生成、エージェントメモリ、またはセマンティック検索アプリケーションのベクトルストアバックエンドとして使用するデプロイメントに影響します。
緩和策
Spring AI を 1.0.x ブランチの場合は 1.0.7 以上に、1.1.x ブランチの場合は 1.1.6 以上にアップグレードしてください。ベクトルストア削除操作で使用されるドキュメント ID が検証され、サニタイズなしで信頼できない入力から生成されていないことを確認するようにアプリケーションコードを確認してください。フィルターインジェクションが発生した場合の影響範囲を制限するために、Milvus インスタンスで最小権限アクセス制御を実装してください。