기술 설명
Spring AI의 Anthropic Skills API 지원은 LLM 생성 파일명을 살균 없이 파일을 디스크에 쓰기 전에 Path.resolve에 직접 전달합니다. LLM의 출력에 영향을 미칠 수 있는 악의적 사용자(예: 조작된 프롬프트 또는 간접 프롬프트 주입을 통해)는 의도된 대상 디렉터리 외부, 제한된 시스템 디렉터리를 포함한 위치에 파일을 쓰도록 애플리케이션을 유도할 수 있습니다. 이는 '모델 생성 콘텐츠가 검증 없이 파일시스템 작업으로 전파되는' 'LLM 출력은 애플리케이션 입력' 사례입니다.
공격 경로
공격자는 LLM의 파일 명명 출력(에이전트 워크플로우의 직접 또는 간접 프롬프트 주입을 통해)에 경로 순회 토큰(예: '../../etc/')을 포함하도록 영향을 미칩니다. Spring AI는 살균되지 않은 LLM 파생 파일명을 Path.resolve에 전달하며, 이는 순회를 해석하고 경로 검증이 발생하기 전에 파일이 공격자가 원하는 위치에 기록됩니다.
영향받는 시스템
Spring AI 버전 1.1.0부터 1.1.x까지. 특히 파일 쓰기 작업을 포함하는 Anthropic Skills API 지원 기능을 사용하는 배포에 영향을 미칩니다. Spring AI는 Java 엔터프라이즈 에이전트 워크플로우 구현에서 널리 사용됩니다.
완화 방안
즉시 Spring AI 1.1.7로 업그레이드하세요. 심층 방어 조치로서, 모든 LLM 파생 파일명에 대해 표준 경로 검증을 강제하고, 파일 쓰기 루트를 명시적으로 허용 목록에 있는 디렉터리로 제한하고, 모든 모델 생성 경로를 신뢰할 수 없는 입력으로 취급하고, 모델 출력이 파일시스템 경로, 도구 인수 또는 API 매개변수를 제어하는 모든 AI 워크플로우를 감사하세요.