何が起きたか
MongoDBChatMessageHistoryは、実行時に信頼できない構造化セッション識別子に対して文書化された文字列型を強制しません(CWE-943)。複数のユーザーの履歴がMongoDBコレクションを共有する場合、識別子はリテラル値ではなくMongoDBクエリ条件として解釈されるため、チャット履歴操作を呼び出せる攻撃者は、別のユーザーの保存された会話を読み取り、変更、または削除できます。@langchain/mongodb 1.3.1で修正されました。
なぜ重要か
LangChainのMongoDBチャットメモリは、永続的なLLM会話/RAGアプリケーションのデフォルトの構成要素です。この欠陥により、あるユーザーが他のユーザーのチャット履歴(プロンプト、コンテキスト、機密性の高い交換内容の可能性)に到達し、改ざんできます — アプリケーションがLLMにフィードバックする正確なデータにメモリポイズニングを引き起こします。
攻撃経路
他のユーザーとコレクションを共有しながら、チャット履歴操作でプレーンなセッション文字列の代わりにMongoDB演算子オブジェクト(例:$ne条件)を供給します。
影響を受けるシステム
@langchain/mongodb < 1.3.1; langchainjs < 1.5.14
緩和策
@langchain/mongodb 1.3.1 / langchainjs 1.5.14にアップグレードしてください。セッション識別子がサーバー制御の文字列であることを確認してください。