技術的な説明
Spring AI の Anthropic Skills API サポートは、LLM が生成したファイル名をサニタイズなしで Path.resolve に直接渡し、ディスクにファイルを書き込みます。LLM の出力に影響を与えることができる悪意のあるユーザー(例えば、細工されたプロンプトまたは間接的なプロンプトインジェクション)は、アプリケーションが意図したターゲットディレクトリ外(制限されたシステムディレクトリを含む)にファイルを書き込ませることができます。これは「LLM の出力はアプリケーションの入力」の直接的な例であり、モデルが生成したコンテンツが検証なしでファイルシステム操作に伝播しています。
攻撃経路
攻撃者は LLM のファイル命名出力に影響を与え(エージェント型ワークフロー内で直接的または間接的なプロンプトインジェクションを通じて)、パストラバーサルトークン(例えば「../../etc/」)を含めます。Spring AI はサニタイズされていない LLM 由来のファイル名を Path.resolve に渡し、トラバーサルが解決され、パス検証が行われる前に攻撃者が望む場所にファイルが書き込まれます。
影響を受けるシステム
Spring AI バージョン 1.1.0 から 1.1.x。具体的には、ファイル書き込み操作を含む Anthropic Skills API サポート機能を使用するデプロイメントに影響します。Spring AI は Java エンタープライズ エージェント型ワークフロー実装で広く使用されています。
緩和策
直ちに Spring AI 1.1.7 にアップグレードしてください。多層防御対策として、LLM 由来のすべてのファイル名に対して正規パス検証を実施し、ファイル書き込みルートを明示的にホワイトリスト化されたディレクトリに限定し、モデルが生成したすべてのパスを信頼されていない入力として扱い、モデル出力がファイルシステムパス、ツール引数、または API パラメータを制御する AI ワークフローを監査してください。