무슨 일이 있었나
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로 업그레이드하고, 세션 식별자가 서버 제어 문자열인지 확인합니다.