🇰🇷 한글 설명
Fonoster 0.22.7 이하 버전의 updateWorkspace 핸들러에서 권한 검증 오류가 발생합니다. 멤버십 확인 후 권한 거부(PERMISSION_DENIED) 콜백을 호출하지만 실행을 중단하지 않아, 권한이 없는 사용자도 워크스페이스 이름을 변경할 수 있는 취약점이 존재합니다.
💡 쉬운 설명
로그인한 사용자라면 누구나 다른 사람의 워크스페이스 이름을 마음대로 바꿀 수 있는 보안 결함입니다. 권한 확인 절차를 거치지만 실제 작업은 멈추지 않고 그대로 진행되기 때문에 발생합니다.
🇺🇸 원문 (English)
The updateWorkspace handler in mods/identity/src/workspaces/createUpdateWorkspace.ts in Fonoster through 0.22.7 invokes the gRPC callback with PERMISSION_DENIED when createIsWorkspaceMember reports that the caller is not a member of the target workspace, but it does not return. Execution continues into prisma.workspace.update, which is scoped by the workspace reference alone, so the rename commits before the second callback is issued and the caller receives a permission error for a write that already succeeded. The gRPC interceptor in mods/common/src/identity/createAuthInterceptor.ts binds the workspace accessKeyId to the caller's token only for paths in workspaceResourceAccess or workspaceResourceOwnerOrAdminAccess, and Identity/UpdateWorkspace is listed in fullIdentityAccess, which the base USER role holds. Any authenticated user can therefore rename an arbitrary workspace in the deployment.
📍 영향받는 시스템
Fonoster 0.22.7 및 그 이전 버전
⚔️ 공격 벡터
인증된 사용자가 권한이 없는 워크스페이스의 ID를 사용하여 UpdateWorkspace API를 호출
🛡️ 대응 방법
권한 거부 콜백 호출 시 즉시 실행을 중단하도록 코드를 수정하거나 최신 보안 패치를 적용
🔧 검증 코드
출력된 버전이 0.22.7 이하인지 확인하여 취약 여부를 판단합니다.
npm list @fonoster/identity | grep -E '0\.[0-9]+\.[0-9]+'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
💻 영향받는 소프트웨어
IBM Verify Identity Access