🇰🇷 한글 설명
Flowise(버전 3.1.2 이하)의 vm2 기반 JavaScript 샌드박스에서 샌드박스 탈출 취약점이 발견되었습니다. 인증된 사용자가 /api/v1/node-custom-function 엔드포인트를 통해 puppeteer.launch()의 매개변수를 조작함으로써 OS 명령어를 실행하거나 호스트 파일을 탈취할 수 있습니다.
💡 쉬운 설명
프로그램 내부의 안전한 격리 공간을 뚫고 나와 컴퓨터를 직접 조작할 수 있는 보안 구멍이 발견되었습니다. 해커가 이 구멍을 이용하면 서버의 중요한 파일을 훔치거나 명령을 내릴 수 있습니다.
🇺🇸 원문 (English)
Flowise (packages flowise and flowise-components) in versions <= 3.1.2 contain a sandbox escape in the vm2/@flowiseai/nodevm JavaScript sandbox. An authenticated user with access to the /api/v1/node-custom-function endpoint can escape the sandbox by supplying attacker-controlled executablePath and args parameters to puppeteer.launch(), which internally invokes child_process.spawn() outside the sandbox boundary. This allows execution of arbitrary OS commands as the Flowise process user (root in the official Docker image) and arbitrary host file disclosure via Chromium's file:// URL handling. In versions 3.0.8–3.1.2 exploitation requires ALLOW_BUILTIN_DEP=true; earlier versions are exploitable by default. Fixed in 3.1.3.
📍 영향받는 시스템
Flowise (packages flowise, flowise-components) versions <= 3.1.2
⚔️ 공격 벡터
인증된 사용자가 puppeteer.launch()의 executablePath 및 args 매개변수를 조작하여 child_process.spawn()을 호출하는 방식
🛡️ 대응 방법
Flowise를 최신 버전인 3.1.3 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 flowise 버전이 3.1.2 이하인지 확인하십시오.
npm list -g flowise --depth=0 | grep flowise