무슨 일이 있었나
Flowise (로우코드 LLM 애플리케이션 플랫폼) 버전 3.1.3까지는 POST /api/v1/node-load-method/:name 엔드포인트를 경로 수준 권한 검사 없이 마운트합니다. 엔드포인트는 공격자 제어 nodeName, loadMethod, inputs 및 credential 값으로 구성 요소 loadMethods를 호출합니다. 선택된 자격증명은 raw Credential.id로 해결되고 호출자의 활성 작업공간에 대해 Credential.workspaceId를 확인하지 않고 복호화됩니다 (다른 자격증명 읽기 경로와 달리 작업공간 범위입니다). 한 작업공간의 인증된 낮은 권한 사용자는 다른 작업공간에 속하는 자격증명 ID를 제공할 수 있으며, Flowise가 혼동된 대리인으로 작동하고 피해자 작업공간의 자격증명을 사용하여 타사 공급자 API 호출 (예: Google Drive listFiles, Google Sheets listSpreadsheets, AWS DynamoDB listTables)을 수행하여 공급자 메타데이터를 공격자에게 반환합니다. raw 자격증명 시크릿 자체는 반환되지 않습니다.
왜 중요한가
Flowise는 다중 테넌트 작업공간 격리를 통해 LLM/RAG 애플리케이션 빌드를 위한 광범위하게 채택된 플랫폼입니다. 이 결함은 해당 격리 경계를 깨뜨리며, 한 테넌트의 모든 인증된 사용자가 다른 테넌트의 저장된 LLM/클라우드 공급자 자격증명을 사용하여 권한 있는 타사 API 호출을 자동으로 호출할 수 있게 합니다 — 일반적으로 자체 호스팅되는 AI 오케스트레이션 도구의 직접적인 교차 테넌트 기밀성 침해입니다.
공격 경로
인증된 낮은 권한 사용자 (또는 작업공간 API 키)가 다른 작업공간의 자격증명 ID를 제공하는 /api/v1/node-load-method/:name에 대한 제작된 POST를 전송하여 서버가 작업공간 소유권 확인 없이 해당 자격증명을 복호화하고 타사 공급자 호출에 사용하도록 합니다.
영향받는 시스템
Flowise <= 3.1.3
완화 방안
Flowise 3.1.4 이상으로 업그레이드하면, 노드 로드 방법 자격증명 해결 경로에 작업공간 범위 확인이 추가됩니다.