T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/authorize.py:31- Finding
Overprivileged Shared Device Token and Unrestricted Tool Dispatch
- Content
View full analysis
dict[str, Any]: session = _session_with_registration( state_dir=Path.home() / ".beatra", post_json=_default_post_json, ) if command == "tools": return session.request(2, "tools/list", {}) try: arguments = json.load(os.sys.stdin) except json.JSONDecodeError as exc: raise RuntimeError("Tool arguments on stdin must be one JSON object") from exc if not isinstance(arguments, dict): raise RuntimeError("Tool arguments on stdin must be one JSON object") assert tool_name is not None return session.request( 2, "tools/call", {"name": tool_name, "arguments": arguments}, ) ``` ### Technical Analysis The Skill declares an image-based product-on-model workflow, but its Device Token requests unrelated privileges for video, music, speech, and voice generation and management. These permissions exceed the minimum scope needed for image transformation, artifact upload, model discovery, billing, and task tracking. The client also accepts any caller-supplied MCP tool name and forwards it to the service without enforcing a package-specific allowlist. Consequently, the unrelated grants are operationally reachable and are not merely unused scope metadata. Because the credential is shared across Beatra Skill packages and includes `wallet:spend`, compromise of the credential or misuse of th ...[truncated 1099 chars]- Remediation
View remediation
