기술 설명
RAGFlow의 프롬프트 생성기(rag/prompts/generator.py)의 Jinja2 서버 측 템플릿 주입(SSTI) 취약점으로 인해 일반 무료 계정을 포함한 인증된 모든 사용자가 호스트 서버에서 임의의 OS 명령어를 실행할 수 있습니다. 악용에는 사용자가 DuckDuckGo + LLM 컴포넌트 체인을 사용하여 Canvas 워크플로우를 생성하기만 하면 되며, 가져오기만으로도 코드 실행을 유발할 수 있습니다. CVSS 점수는 9.9(Critical)입니다. RAGFlow는 GitHub에서 52,000개 이상의 스타를 받은 오픈소스 RAG 엔진입니다.
공격 경로
인증된 웹 사용자가 조작된 Canvas 워크플로우를 생성하거나 가져옵니다. 프롬프트 생성기는 샌드박스 처리되지 않은 Jinja2 템플릿을 렌더링하여 Jinja2 `cycler.__init__.__globals__` 체인을 통해 Python의 `os.popen`으로 OS 명령어 주입을 허용합니다. 관리자 권한이 필요하지 않으며, 등록된 모든 사용자가 악용할 수 있습니다.
영향받는 시스템
RAGFlow 버전 0.24.0 및 이전 버전(오픈소스 RAG 엔진, GitHub의 infiniflow/ragflow). 자체 호스팅 배포만 해당됩니다. 클라우드 관리형 배포는 제공자의 구성에 따라 다를 수 있습니다.
완화 방안
패치된 버전으로 업그레이드하세요(GHSA-wpg4-h5g2-jxm6 참조). 즉시 업그레이드가 불가능한 경우, 신뢰할 수 없는 사용자의 Canvas 워크플로우 생성을 비활성화하고, RAGFlow 서버에 대한 네트워크 수준 격리를 강제하며, RAGFlow 프로세스가 루트로 실행되지 않도록 최소 권한의 원칙을 적용하세요. ragflow 프로세스의 비정상적인 서브프로세스 호출에 대해 서버 로그를 검토하세요.