무슨 일이 있었나
CVE-2026-58579 (CVSS 5.4 중간)은 2026년 7월 2일 NVD에 게시되었습니다. 0.26.3 이전의 RAGFlow는 HTML 새니타이제이션 없이 에이전트 파이프라인 DSL 노드 이름을 저장합니다. 에이전트 업데이트 엔드포인트는 JSON 유효성을 위해 DSL을 정규화하지만 노드 이름을 그대로 유지합니다. 데이터 흐름 결과 웹 UI는 해당 이름을 원본 HTML로 렌더링하여 GitHub 문제(infiniflow/ragflow#16507)에서 확인된 저장 XSS 조건을 생성합니다.
왜 중요한가
RAGFlow는 널리 사용되는 오픈소스 엔터프라이즈 RAG 플랫폼입니다. 에이전트 파이프라인 UI의 저장 XSS는 파이프라인 생성/업데이트 접근 권한이 있는 공격자가 다른 사용자의 브라우저 세션(관리자 세션 포함)에서 임의의 JavaScript를 실행하도록 허용하여 — 세션 하이재킹, 자격증명 도용 또는 RAGFlow 인스턴스 내 추가 수평 이동 활성화. 멀티테넌트 또는 팀 배포에서 한 명의 손상된 파이프라인 작성자는 에이전트 결과를 보는 모든 사용자에게 영향을 줄 수 있습니다.
공격 경로
인증된 사용자가 에이전트 업데이트 엔드포인트(PUT /v1/agents/<agent_id>)를 통해 제작된 DSL을 제출합니다. normalize_dsl() 핸들러는 JSON 구조 검증만 수행하고 노드 이름을 그대로 유지합니다. 사용자가 데이터 흐름 결과 페이지를 볼 때 hooks.ts는 노드 이름을 원본 HTML로 렌더링하여 주입된 스크립트를 브라우저 세션에서 실행합니다.
영향받는 시스템
RAGFlow (infiniflow/ragflow) < 0.26.3
완화 방안
RAGFlow를 버전 0.26.3 이상으로 업그레이드하세요. 패치 커밋: https://github.com/infiniflow/ragflow/commit/572f1ea9f4eba6a60e64f7437dee60aa1c0913f1