무슨 일이 있었나
CVE-2026-59294: Spring AI의 ResourceCacheService.getCacheName()은 URI 프래그먼트를 경로 구분자나 '..' 시퀀스를 제거하지 않고 캐시 파일명에 그대로 추가한 후 File 생성자에 전달하여 경로 순회를 통한 임의 파일 쓰기를 가능하게 합니다. CVE-2026-59319: RedisChatMemoryRepository.findByMetadata()는 호출자가 제공한 메타데이터에서 RediSearch 태그/텍스트 쿼리를 구성할 때 동일 클래스의 형제 메서드와 달리 RediSearchUtil.escape()를 적용하지 않아 사용자 제어 메타데이터 값으로부터의 쿼리 주입을 허용합니다.
왜 중요한가
이를 통해 공격자는 Spring AI 리소스 캐시를 실행하는 호스트에 임의의 파일을 쓸 수 있으며(파일 심기를 통한 잠재적 RCE), Spring AI의 Redis 기반 메모리 저장소에서 대화/테넌트 간 채팅 메모리를 노출하거나 조작하기 위해 RediSearch 쿼리를 주입할 수 있습니다.
공격 경로
캐시 파일 경로에 작성된 조작된 URI 프래그먼트 또는 RediSearch 태그/텍스트 쿼리에 주입된 사용자 제어 메타데이터 값
영향받는 시스템
Spring AI 1.0.0-1.0.9, 1.1.0-1.1.8, 2.0.0
완화 방안
Spring AI 2.0.1 이상으로 업그레이드