何が起きたか
Langchain-Chatchat 0.3.1.3まで、認証なしで任意の登録済みツールを名前で呼び出すPOST /tools/call APIエンドポイントを公開しており、常に登録されているシェルツールが呼び出し可能です。リモート攻撃者はシェルツールを指定した単一のリクエストを送信し、サーバーユーザーとして任意のOSコマンドを実行できます(提供されているDockerイメージではroot)。
なぜ重要か
これにより、公開チャット/RAGバックエンドが事前認証のルートシェルに変わります。ChatChatは広く展開されている中国のRAG/チャットボットフレームワークで、しばしばインターネットに公開されるため、攻撃者はホストにピボットし、サービスが保持するLLM/データベース資格情報を読み取り、ナレッジベースやモデルパイプラインを改ざんできます。
攻撃経路
常に登録されているシェルツールを指定した認証なしのPOST /tools/call。
影響を受けるシステム
Langchain-Chatchat <= 0.3.1.3 (pypi langchain-chatchat)
緩和策
修正済みリリースにアップグレードし、/tools/callに認証/許可リストを追加。サーバー側で登録されるツールを制限。