🇰🇷 한글 설명
PraisonAI Platform 0.1.4 미만 버전에서 발생하는 취약점으로, 워크스페이스 권한 검증 시 URL의 ID와 실제 리소스의 소유권을 비교하지 않는 결함이 있습니다. 이로 인해 공격자는 타인의 리소스에 접근하거나 권한 상승을 통해 워크스페이스를 관리할 수 있으며, 이메일 인증 없는 회원가입을 통해 시스템에 쉽게 침투할 수 있습니다.
💡 쉬운 설명
로그인한 사용자가 주소창의 숫자만 살짝 바꾸면 다른 사람의 작업 내용이나 개인 정보를 마음대로 보고 수정할 수 있는 보안 구멍이 있습니다. 또한 일반 사용자가 관리자 권한을 훔쳐서 전체 시스템을 삭제하거나 조작할 수도 있습니다.
🇺🇸 원문 (English)
PraisonAI Platform is the platform layer for the PraisonAI multi-agent teams system. Prior to version 0.1.4, the Platform server exposes resources under `/api/v1/workspaces/{workspace_id}/...` and protects them with a `require_workspace_member(workspace_id)` FastAPI dependency. The dependency only checks that the caller is a member of the workspace_id in the URL prefix. The route handlers then look up the inner resource (`agent_id`, `issue_id`, `project_id`, `label_id`, `comment_id`, `dependency_id`) by primary key alone. The resource's own `workspace_id` is never compared to the URL's `workspace_id`. A user can therefore put their own workspace in the URL prefix and any other workspace's resource ID in the path. The auth check passes, since they really are a member of the prefix workspace. The service then returns the cross-tenant resource for read, update, or delete. There is a second bug in the member-management routes (`add_member`, `update_member_role`, `remove_member`, `update_workspace`, `delete_workspace`). Each one inherits the default `min_role="member"` from `require_workspace_member`. Any basic member can therefore promote themselves to admin or owner, demote or remove other members, and delete the workspace. The role hierarchy exists in the schema but is not enforced. Registration is open at `/api/v1/auth/register` with no email verification. The default server bind is `0.0.0.0:8000` (`python -m praisonai_platform`). One curl from any unauthenticated network position is enough to bootstrap into the system. PraisonAI Platform version 0.1.4 patches the issue.
📍 영향받는 시스템
PraisonAI Platform version < 0.1.4
⚔️ 공격 벡터
인증된 사용자가 URL 경로의 워크스페이스 ID를 자신의 것으로 조작하고 리소스 ID를 타인의 것으로 입력하여 접근
🛡️ 대응 방법
PraisonAI Platform을 최신 보안 패치가 적용된 0.1.4 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.1.4 미만(예: 0.1.3)이면 취약한 상태이며, 0.1.4 이상이면 안전합니다.
python -c 'import praisonai_platform; print(praisonai_platform.__version__)' 2>/dev/null || echo 'Package not found'