🇰🇷 한글 설명
Open WebUI 0.9.6 미만 버전에서 터미널 서버 리버스 프록시의 경로 검증 미흡으로 인해 발생하는 취약점입니다. 인증된 사용자가 인코딩된 경로 탐색 시퀀스를 사용하여 의도된 범위를 벗어나 호스트의 파일에 접근하거나 내부 서비스에 SSRF 공격을 수행할 수 있습니다.
💡 쉬운 설명
터미널 기능을 사용하는 사용자가 특수하게 조작된 주소를 입력하여 허용되지 않은 파일이나 내부 네트워크에 몰래 접근할 수 있는 보안 구멍입니다. 이로 인해 서버의 중요한 정보가 유출되거나 내부 시스템이 공격받을 수 있습니다.
🇺🇸 원문 (English)
Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.6, the terminal-server reverse proxy in `backend/open_webui/routers/terminals.py` does not fully confine the user-controlled `path` segment before forwarding it to an admin-configured terminal server. An authenticated user who has been granted access to a terminal server can craft `path` values containing encoded `../` traversal sequences that escape the intended path (or policy) scope on that server, reaching unintended endpoints and files on the terminal-server host. Where the terminal server fans requests out to internal services, this also gives SSRF-style reach into those services. This is a separate code path from the `/api/v1/retrieval/process/web` SSRF (GHSA-c6xv-rcvw-v685), with its own input. Two distinct vectors are consolidated here: first, raw path forwarding / single-encoded traversal (original report); and second, a bypass of the subsequently-added `_sanitize_proxy_path` mitigation using double-encoded dots (`%252e%252e`). The attacker-controlled input is the request `path`, supplied by the non-admin user, not anything an administrator configures, so this is not an admin-trust / Rule-9 situation. Version 0.9.6 fixes the issue.
📍 영향받는 시스템
Open WebUI 0.9.6 미만 버전
⚔️ 공격 벡터
인코딩된 경로 탐색(path traversal) 및 이중 인코딩된 점(..%252e)을 이용한 경로 우회 공격
🛡️ 대응 방법
Open WebUI를 최신 버전인 0.9.6 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.9.6보다 낮으면 취약한 상태이며, 0.9.6 이상이면 안전합니다.
python3 -c 'import open_webui; print(open_webui.__version__)' 2>/dev/null || echo 'Version not found'