🇰🇷 한글 설명
Pipecat 0.0.90부터 1.2.0 미만 버전의 개발 러너에서 경로 순환 취약점이 발견되었습니다. --folder 플래그 사용 시 GET /files/{filename:path} 엔드포인트가 생성되며, URL 인코딩된 슬래시(%2F)를 통해 경로 제한을 우회할 수 있습니다. 이로 인해 공격자는 인증 없이 SSH 키나 시스템 파일 등 서버의 모든 접근 가능한 파일을 읽을 수 있습니다.
💡 쉬운 설명
Pipecat의 파일 다운로드 기능이 보안 검사를 제대로 하지 않아, 공격자가 서버의 숨겨진 파일들을 마음대로 읽을 수 있습니다. 이 취약점은 1.2.0 버전에서 수정되었으므로 반드시 업데이트해야 합니다.
🇺🇸 원문 (English)
Pipecat is an open-source Python framework for building real-time voice and multimodal conversational agents. From version 0.0.90 to before version 1.2.0, a path traversal vulnerability exists in Pipecat's development runner (src/pipecat/runner/run.py). When the runner is started with the --folder flag, it exposes a GET /files/{filename:path} download endpoint. The filename path parameter is concatenated directly onto args.folder with no containment check. Starlette normalises literal ../ sequences in URLs, but %2F-encoded slashes bypass this normalisation: the path parameter is URL-decoded after routing, so ..%2F..%2Fetc%2Fpasswd resolves to a path two levels above args.folder. An attacker with network access to the runner can read any file the pipecat process has permission to access — including SSH private keys, credentials, and system files — with a single unauthenticated HTTP request. This issue has been patched in version 1.2.0.
📍 영향받는 시스템
Pipecat versions >= 0.0.90 and < 1.2.0
⚔️ 공격 벡터
네트워크 접근 권한을 가진 공격자가 URL 인코딩된 경로(%2F)를 사용하여 개발 러너의 파일 다운로드 엔드포인트를 악용합니다.
🛡️ 대응 방법
Pipecat을 1.2.0 이상 버전으로 업그레이드하여 취약점을 패치합니다.
🔧 검증 코드
명령어 실행 시 버전 정보가 출력되면 1.2.0 미만 버전이므로 취약점이 존재합니다.
pip show pipecat-ai 2>/dev/null | grep -E 'Version' | grep -vE '1\.[2-9]\.|2\.'