기술 설명
Spring AI의 MilvusVectorStore doDelete 메서드는 정제되지 않은 문서 ID를 통한 filter-expression injection에 취약합니다. 공격자는 Milvus filter 표현식에 직접 포함되는 악성 ID 값을 구성할 수 있으며, 매개변수화되지 않아 RAG 및 agentic AI 메모리 시스템에 사용되는 벡터 데이터베이스의 삭제 작업 중에 임의의 필터 로직을 실행할 수 있습니다.
공격 경로
MilvusVectorStore 삭제 작업에 전달된 문서 ID를 제어할 수 있는 공격자는 임의의 filter 표현식을 주입할 수 있습니다. 문서 ID가 바인드된 매개변수로 전달되지 않고 필터 문자열에 연결되기 때문에, 구성된 ID는 의도된 필터 컨텍스트를 벗어나 의도하지 않은 벡터 레코드를 삭제하거나 조작할 수 있습니다. 이는 사용자 입력 또는 외부 데이터가 벡터 스토어 작업에 사용되는 문서 식별자에 영향을 미치는 애플리케이션에서 직접 악용될 수 있습니다.
영향받는 시스템
Spring AI 1.0.0부터 최신 1.0.x (1.0.7 이전) 및 Spring AI 1.1.0부터 최신 1.1.x (1.1.6 이전). 검색 증강 생성, agentic 메모리 또는 의미론적 검색 애플리케이션의 벡터 스토어 백엔드로 Milvus를 사용하는 배포에 영향을 미칩니다.
완화 방안
Spring AI를 1.0.x 브랜치의 1.0.7 이상 또는 1.1.x 브랜치의 1.1.6 이상으로 업그레이드하세요. 벡터 스토어 삭제 작업에 사용된 문서 ID가 검증되고 정제 없이 신뢰할 수 없는 입력에서 비롯되지 않도록 애플리케이션 코드를 검토하세요. Milvus 인스턴스에 최소 권한 액세스 제어를 구현하여 filter injection이 발생할 경우 영향 범위를 제한하세요.