技術的な説明
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ワークフローを監査します。