🇰🇷 한글 설명
OpenReplay 1.26.0 이전 버전에서 API 인증 후 테넌트 검증을 수행하지 않아, 공격자가 유효한 API 키로 다른 테넌트의 프로젝트에 접근할 수 있습니다. 공개 projectKey 노출로 인해 악의적 행위자가 다른 테넌트의 사용자 세션 정보와 민감한 이벤트 데이터를 열람할 수 있는 권한 검증 우회 취약점입니다.
💡 쉬운 설명
OpenReplay에서 사용자 확인은 되지만 어떤 프로젝트에 접근할 수 있는지 확인하지 않습니다. 공격자가 다른 고객의 세션 정보를 몰래 볼 수 있습니다.
🇺🇸 원문 (English)
OpenReplay is a self-hosted session replay suite. Prior to 1.26.0, OpenReplay's Python API exposes several app_apikey routes that trust a caller-provided projectKey after validating only that the API key itself is valid and that the target projectKey exists. The authorization flow does not verify that the authenticated API key and the requested project belong to the same tenant. Because the public tracker design exposes projectKey to browser-side code, an attacker who owns any valid API key for their own tenant can target another tenant's project by reusing that public projectKey. The vulnerable routes allow the attacker to enumerate victim user sessions and then retrieve sensitive session event data across the tenant boundary. This vulnerability is fixed in 1.26.0.
📍 영향받는 시스템
OpenReplay < 1.26.0
⚔️ 공격 벡터
유효한 API 키 소유자가 다른 테넌트의 공개 projectKey를 사용하여 app_apikey 라우트에 요청
🛡️ 대응 방법
OpenReplay를 1.26.0 이상으로 즉시 업그레이드
🔧 검증 코드
unauthorized 또는 403 에러가 나오면 패치됨, 세션 데이터가 반환되면 취약한 상태
curl -s http://openreplay-host/api/v1/sessions -H 'Authorization: Bearer API_KEY' 2>&1 | grep -iE 'unauthorized|403|forbidden' && echo 'patched' || echo 'vulnerable'