Spring AI 2.0.1:7件のCVE修正、ツール呼び出し制限、ストリーミング信頼性向上
Spring AI 2.0.1は、2.0系初の大規模メンテナンスリリースです。7件のセキュリティ修正、暴走するエージェントループを止める新しいツール呼び出し制限、OpenAI音声ストリーミング、そして多数のストリーミング/ツール呼び出しの信頼性パッチが含まれます。

Spring AI 2.0.1がリリースされました。メンテナンスリリースとしては大規模で、80件以上のIssueとPRが含まれ、その多くはここ数週間で2.0.0 GAに移行したチームからのものです。見出しはセキュリティ(7件のCVE修正)ですが、GA以降に頻繁に要望されていた機能もいくつか追加されています。
注目すべきセキュリティ修正
このリリースでは7件のCVEが修正されています。最も深刻なものは以下の通りです。
- CVE-2026-47851 — PDFドキュメントリーダーにおける攻撃者制御のPDFアウトラインツリーでの無制限再帰。巧妙に作成されたPDFがリーダーをクラッシュさせる可能性があります。
- CVE-2026-47852 — 予測可能なキャッシュディレクトリの場所により、ローカルでのONNXモデル置換が可能。ローカルアクセスを持つ攻撃者がモデルファイルを交換できる可能性があります。
- CVE-2026-59279 — 繰り返しのinitializeリクエストによる無制限の永続セッション割り当て。DoSベクトルです。
- CVE-2026-59294 — ResourceCacheServiceでのパストラバーサルによる任意ファイル書き込み。
- CVE-2026-59308 — SHA-256トランケーションによるセマンティックキャッシュのテナント間分離バイパス。
- CVE-2026-59319 — RedisChatMemoryRepositoryでのRediSearchタグインジェクションにより、会話間のデータ漏洩が可能。
- CVE-2026-59318 — DefaultToolCallingManagerのグローバルリゾルバのフォールバックにより、プロンプトインジェクションで未公開ツールのディスパッチが可能。
2.0.0を使用している場合は、今すぐ2.0.1にアップグレードしてください。ほとんどのアプリはバージョンを変更するだけで済みますが、いくつかの変更には注意が必要です。
アップグレード前の破壊的変更
- 2.0.0で非推奨となったMistral AIチャットモデルが削除されました。定数で参照している場合は、サポートされているモデル名に切り替えてください。
- Redisチャットメモリの自動設定モジュールが改名され、
spring-ai-autoconfigure-*命名規則に合わせられました。アーティファクトIDを更新してください。 - OpenAIツール呼び出しのstrictモードのデフォルトが
falseになりました。以前は、オプションパラメータを持つツールは、生成されたスキーマがrequiredから省略していたため、400エラーで失敗していました。strictモードはオプトインとなり、OpenAI APIのデフォルトと一致します。 Mediaビルダーは、Objectを受け入れる代わりに型付きのdataオーバーロードを使用します。- DeepSeekApiが改訂され、他のAPIクライアントの規約に合わせられました。
- Couchbaseベクターストアは、独自のクライアントを作成する代わりに、Spring Boot管理のCouchbaseクライアントを使用するようになりました。
新機能
ツール呼び出し制限。終了しないエージェントループは高コストな障害モードです。ToolCallingAdvisorは、リクエストごとのツール呼び出し回数に設定可能な制限を受け付け、超過するとToolCallLimitExceededExceptionをスローします。例外パスは単一のGenerationを返すため、エラーハンドリングは一貫しています。ツール解決のフォールバックも設定可能です(即時失敗またはフォールバック)。
OpenAIオーディオ。OpenAiAudioSpeechModelはオーディオストリーミングをサポートし、音声と配信を制御するinstructionsオプションを公開します。文字起こしオプションとレスポンスも、OpenAI APIのサーフェスをより広くカバーするように拡張されました。
Google GenAI。ToolChoiceサポート(強制、無効、モデル任せ)と、標準のImageModel抽象化による画像生成が追加されました。
ドキュメント読み取り。PagePdfDocumentReaderはページ範囲を受け付けるため、大きなドキュメントの一部を取り込むことができます。TokenTextSplitterは、ビルダー引数を早期に検証し、後で紛らわしいエラーで失敗することを防ぎます。
AWSリージョン解決。Spring AIはAWS SDKのデフォルトのリージョン解決ルールに従うようになり、リージョン解決中に紛らわしいWARNをログに出力しなくなりました。Bedrockで環境変数やプロファイルベースのリージョン設定に依存していた場合、他のAWSスタックと同じように動作するようになりました。
信頼性:ストリーミングとツール呼び出しに重点
ストリーミング修正には以下が含まれます:OpenAiChatModelはストリーミングツール呼び出しのデルタをインデックスでマージし、空のtool_callsチャンクを処理し、ストリーミングモードでのゼロトークン使用量を解決します。ストリームのキャンセル時に、チャットと音声文字起こしの両方で、基盤となるHTTPレスポンスがリークしなくなりました。ToolCallingAdvisorのストリーミングループは、doBeforeStreamの変更をドロップしなくなり、ツール呼び出しの反復全体でトークン使用量が蓄積され、ツール呼び出しのオブザベーションはブロッキングモードで正しい親スパンを取得します。
また修正されたもの:チャットオプションビルダーのclone()(およびAnthropicの)での共有可変状態、ToolContextパラメータ検出、strictモードのペイロード配置、OpenAiChatModelでのPDFメディアマッピング、buildGenerationでのOptionalアンラップ、OpenAI API経由でDeepSeekを呼び出す際のreasoningContentメタデータ、モデル構築外で無視されていたAnthropicChatOptions.timeout(Duration)、OllamaChatModelのプロンプトオプションが設定済みモデルを継承しない問題、Google GenAIの思考レベル検証、Mistral AIモデレーション結果のnullフィールド、プロキシホストのMicrosoft Foundry URLパス処理、TLS検査プロキシ背後でのAzure OpenAI認証。
2.0.0で導入されたツール検索アドバイザーは、BOMに含まれるようになりました(以前は欠落しており、依存関係に不便でした)。自動設定の順序と並列ツール呼び出しの参照抽出の修正も含まれます。
終了しないエージェントループは高コストな障害モードです。ToolCallingAdvisorは、リクエストごとのツール呼び出し回数に設定可能な制限を受け付けます。
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。