技術的な説明
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 インスタンスに最小権限アクセス制御を実装してください。